
저는 DigitalOcean의 소규모 서버(월 5달러)를 가지고 있는데 해당 서버에는 20GB 중 약 16GB만 있습니다. 나는 일부 작은 파일(3-6Mb)을 자동으로 다운로드하는 사이트를 호스팅할 예정이며 결국 다운로드 폴더가 커질 것입니다. 매일 자동으로 실행되어 특정 폴더를 확인하고 해당 폴더가 XGB를 초과하면 폴더 정리를 시도하는 일종의 크론 작업이나 스크립트가 있습니까? (일부 파일이 사용 중일 수 있음)
중요한 경우 Ubuntu 15를 실행하고 있습니다. 어떤 팁이라도 주셔서 감사합니다.
답변1
나는 아래에 이 작업을 수행할 스크립트를 작성했습니다. 특히 rm -r 명령을 실행하지 않았으므로 만족하는지 다시 한번 확인하십시오. (이 명령은 하위 폴더를 포함하여 해당 폴더의 모든 내용을 삭제해야 합니다.
#! /bin/bash
FOLDER=/folder/to/delete
MAXSIZEINGIGS=10
#### No User Serviceable Parts below this line ###
MAXSIZE=$(( $MAXSIZEINGIGS * 1024 * 1024 ))
FOLDERSIZE=`du -ks $FOLDER | cut -f1`
if [ $FOLDERSIZE -gt $MAXSIZE ]
then
rm -r $FOLDER/*
fi
위 스크립트로 파일을 생성한 다음 실행 가능하게 만들고(chmod 755 파일 이름) 다음과 같은 줄을 사용하여 crontab에 추가합니다.
02 02 * * * ownername /path/to/file
(이것은 매일 아침 오전 2시 2분에 실행되며 /etc/crontab에 추가했다고 가정합니다. 사용자 crontab에 추가한 경우 "ownername" 비트를 생략하십시오.
즉, 이것이 일을 하는 좋은 방법인지 궁금합니다. 완전히 다른 접근 방식은 특정 기간보다 오래된 모든 파일을 정기적으로 제거하는 것일 수 있습니다. 다음과 같은 crontab의 1개 라이너를 사용하여 이 작업을 수행할 수 있습니다.
02 04 * * * username find /data/spam -ctime +15 -exec rm {} +
/data/spam에서 14일보다 오래된 모든 파일을 찾아서 삭제합니다.