개요
Synology/Xpenology에서 특정한 규칙에 따라 파일을 자동으로 분류하여 원하는 폴더로 이동시키는 방법입니다. Download Station에서 파일을 다운로드 받은 이후에 파일에 따라 지정된 폴더로 이동시키고 싶을 때 등 여러 방면으로 활용할 수 있습니다.
파일 이름, 확장자 등 특정 조건에 해당하는 파일을 원하는 폴더로 이동
작업 스케줄러 설정
제어판 > 작업 스케줄러 > 생성 > 예약된 작업 > 사용자 정의 스크립트
를 선택합니다.
일반
탭에서 아래와 같이 입력합니다.
- 작업 : Move file(원하는 작업명)
- 사용자 : root(다른 사용자를 선택하셔도 됩니다)
- 활성화됨 체크 상태 유지
스케줄
탭을 아래와 같이 설정합니다.
- 다음 일수 후 실행 : 매일
- 첫 실행 시간 : 08:00(원하는 시간을 선택하시면 됩니다. 저는 서버가 8시에 켜지고 24시에 꺼지게 설정돼 있어서 이렇게 설정했습니다.)
- 주기 : 매 5 분마다(원하는 주기 선택)
- 마지막 실행 시간 : 23:55
특정 확장자의 파일을 디렉토리로 이동
작업 설정
탭에 아래와 같이 입력합니다. 사용자 정의 스크립트란에 아래 코드를 입력합니다. 아래 코드는 /volume1/downloads/
디렉토리에 있는 모든 MP3
파일을 /volume1/music/iTunes/iTunes Media/iTunes에 자동 추가/
라는 디렉토리로 이동시킨다는 의미입니다.
find /volume2/downloads/ -name "*.mp3" -type f -exec mv {} "/volume2/music/iTunes/iTunes Media/iTunes에 자동으로 추가/" \;
경로에 한글이 포함되어 있거나 띄어쓰기가 있다면 경로를 “”로 묶어 주시기 바랍니다.
특정 키워드가 포함된 동영상을 디렉토리로 이동
아래 코드는 /volume1/downloads/
디렉토리에 있는 파일 중, 무한도전
이라는 이름이 포함된 동영상 파일을 /volume1/video/tv/무한도전/
이라는 디렉토리로 이동합니다. 동영상 포맷이 더 있다면 코드에 추가해주면 됩니다.
find /volume1/downloads/ -type f -regex '.*무한도전.*\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)' -exec mv {} "/volume1/video/tv/무한도전/" \;
만약 다운로드 받은지 날짜가 좀 지난 파일만 옮기고 싶다면 -mtime
옵션을 사용하면 됩니다. 아래 -mtime +5
는 6일 전에 생성된 파일을 의미합니다.
find /volume1/downloads/ -type f -mtime +5 -regex '.*무한도전.*\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)' -exec mv {} "/volume1/video/tv/무한도전/" \;
find 명령 사용법은 이 글을 참고하세요.
파일 이름에 특정 디렉토리 이름이 포함된 경우 해당 디렉토리로 파일을 이동
예를 들어 MBC 무한도전 20170622.mp4
라는 파일이 있고 무한도전 영상만 모아놓은 무한도전
이라는 디렉토리가 있는 경우 파일 이름에 무한도전
이 포함되어 있으면 무한도전
디렉토리로 파일을 이동하는 스크립트입니다.
제가 작성한 것은 아니고 클리앙의 TRPE님께서 작성한 것을 가져 왔습니다. 저도 아직 테스트를 해보지는 않았고 일단 스크랩의 개념으로 적어 둡니다.
TRG_PATH=/volume1/VIDEO/TV ##이동할 디렉토리를 입력합니다.
ORI_PATH=/volume1/Download ##다운로드 받은 디렉토리를 입력합니다.
for X in $(ls $TRG_PATH | grep -v "(" | grep -v "@" | sed 's/ /_/g') ##grep –v 다음에 제외할 디렉토리를 입력합니다.
do
FILENAME=$(echo $X | awk -F_ '{
i=2;
fn=$1;
while(i<=NF)
{
fn=sprintf("%s*%s",fn, $i);
i++;
}
print fn;
}')
if [ -f ${ORI_PATH}/*${FILENAME}*.* ] && [ -d ${TRG_PATH}/*${FILENAME}*/ ]
then
mv ${ORI_PATH}/*${FILENAME}*.* ${TRG_PATH}/*${FILENAME}*/
fi
done
본문 코드를 복붙해도 작동이 안되길래 찾아보니 find 뒤의 경로에 큰따옴표를 추가하니 잘 작동하네요.
예시) find /volume2/downloads/ -> find “/volume2/downloads/”
이런거 너무 감사합니다!