IT/이슈 해결

[Synology] 시놀로지 오래된 파일 자동 삭제

Humilitas_hk 2021. 6. 16. 18:05
사실 리눅스 등에서 오래된 파일을 자동으로 삭제하는 방법은 그리 어렵지 않게 인터넷에서 찾을 수 있지만,(배치파일과 크론 등으로)

 

시놀로지에서 자동으로 오래된 파일을 검색하고 삭제하는 것에 대해 자세히 기록된 것을 찾을 수 없어 내가 했던 실수와 해결방법을 여기에 기록한다.
 
한줄 요약 : 시놀로지 작업스케줄러에서 find 명령어를 사용하려면 다음과 같은 형식으로 입력해줘야만 한다.

 

find "파일을 찾을 절대경로" -name '파일명'

 

아래는 특정 폴더에 있는 14일 이상된 파일을 자동으로 삭제하는 스크립트이다.

find "특정 폴더 절대경로" -name '*.*' -mtime +14 -exec rm -f {} \;

 

[Synology] 시놀로지 오래된 파일 자동 삭제

 

시놀로지에서 오래된 파일을 자동 삭제하는 방법은 우선 다음과 같다.

  1. find 명령어로 오래된 파일을 검색한다.
  2. 검색한 파일을 삭제한다.
  3. 위 명령어를 배치파일로 작성한다.
  4. 시놀로지의 작업스케줄러에 작성한 배치파일을 등록한다.
 
방법은 이렇게 간단한데 나는 다음과 같은 문제를 겪었다.
ssh로 접속한 시놀로지에서는 배치파일이 정상작동하는데, 작업 스케줄러에 등록한 후 실행하면 적용이 안되는 현상이다.
 
결론부터 말하자면 find 명령어를 사용할 때 상대경로를 입력해주었는데 해당 파일이 띄어쓰기가 되어있어 \(역슬래시)를 사용하니 시놀로지 작업스케줄러에서 find 명령어를 제대로 인식하지 못하였다.

 

 

시놀로지에 이메일을 등록하면 작업 스케줄러 작업 완료시 해당 로그를 이메일로 받을 수 있다. 아래 그림은 내가 겪은 문제 대한 시놀로지 로그 이메일이다.

 
로그를 보면 해당 파일이나 디렉토리를 찾을 수 없다고 하는데, 아마 띄어쓰기가 되어 있는 걸 인식하지 못하는 듯 하다.
아래와 같이 배치 파일을 수정하여 문제를 해결하였다.
 
find 뒤에 파일을 찾을 경로를 절대경로로 입력해주고 "(큰따옴표)로 감쌌다.
 
이전 배치파일 내용

#!/bin/bash

find 1.\ something -name '*.tar.gz' -mtime +14 -exec rm -f {} \;
find 2.\ something -name '*.tar.gz' -mtime +14 -exec rm -f {} \;


exit

 

 
수정한 배치파일 내용

#!/bin/bash

find "/volume1/BACKUP/1. something" -name '*.tar.gz' -mtime +14 -exec rm -f {} \;
find "/volume1/BACKUP/2. something" -name '*.tar.gz' -mtime +14 -exec rm -f {} \;


exit

 

수정한 배치파일을 시놀로지 작업스크립트에 적용하니 정상적으로 오래된 파일이 삭제되었다.

위 배치파일은 14일 이전에 생성된 파일 중, .tar.gz 파일만 삭제하는 스크립트이다.

반응형