IT/이슈 해결
[Synology] 시놀로지 오래된 파일 자동 삭제
Humilitas_hk
2021. 6. 16. 18:05
사실 리눅스 등에서 오래된 파일을 자동으로 삭제하는 방법은 그리 어렵지 않게 인터넷에서 찾을 수 있지만,(배치파일과 크론 등으로)
시놀로지에서 자동으로 오래된 파일을 검색하고 삭제하는 것에 대해 자세히 기록된 것을 찾을 수 없어 내가 했던 실수와 해결방법을 여기에 기록한다.
한줄 요약 : 시놀로지 작업스케줄러에서 find 명령어를 사용하려면 다음과 같은 형식으로 입력해줘야만 한다.
find "파일을 찾을 절대경로" -name '파일명'
아래는 특정 폴더에 있는 14일 이상된 파일을 자동으로 삭제하는 스크립트이다.
find "특정 폴더 절대경로" -name '*.*' -mtime +14 -exec rm -f {} \;
[Synology] 시놀로지 오래된 파일 자동 삭제
시놀로지에서 오래된 파일을 자동 삭제하는 방법은 우선 다음과 같다.
- find 명령어로 오래된 파일을 검색한다.
- 검색한 파일을 삭제한다.
- 위 명령어를 배치파일로 작성한다.
- 시놀로지의 작업스케줄러에 작성한 배치파일을 등록한다.
방법은 이렇게 간단한데 나는 다음과 같은 문제를 겪었다.
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 파일만 삭제하는 스크립트이다.
반응형