백업을 날짜별로 그룹화한 다음 X일이 지난 파일 및 폴더를 삭제하는 스크립트

백업을 날짜별로 그룹화한 다음 X일이 지난 파일 및 폴더를 삭제하는 스크립트

30일 백업 = 30개 폴더가 있고 백업은 매시간 실행되므로 각 폴더에는 24개의 파일이 있습니다. 파일의 최신 날짜 5개를 유지하는 스크립트를 실행해야 합니다.

예를 들어 오늘이 6월 30일이고 스크립트를 실행하면 6월 25일, 6월 26일, 6월 27일, 7월 28일, 7월 29일 폴더에 파일이 몇 개 있더라도 상관없이 5개 폴더를 모두 유지하고 해당 폴더만 삭제합니다. 6월 24일 이상입니다.

백업 작업으로 인해 빈 zip 파일이 생성되는 경우 데이터가 10kb 미만인 폴더를 건너뛰는 것도 좋습니다.

지금까지 테스트한 내용은 다음과 같습니다.

find /files/ -ctime +5 -printf "%TY-%Tm-%Td\n" | sort -u -r | tail -n+5 | xargs rm -R

-ctime +5 = which files we want to expire created more than 5 days ago,
-printf "%TY-%Tm-%Td\n" outputs the dates of the folders so we can sort them
sort -u -r = sorting the output so we can do tail
tail -n +5 = tail skips the 5 newest filegroups: grouped by date, not just 5 newest files

이 논리가 맞나요? 또한 "오래된 백업"의 결과 목록에서 "rm -R"을 수행하려면 일종의 xarg가 필요합니다.

미리 감사드립니다!

관련 정보