find 명령을 사용하여 오래된 백업 삭제

find 명령을 사용하여 오래된 백업 삭제

저는 이 명령을 사용하여 서버의 오래된 백업을 삭제했습니다.

find /backups/etcbak/ -mtime +7 -exec rm {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm {} \; 

위 명령은 대상 디렉터리의 실제 파일을 삭제하는 데 유용합니다.

내 질문은 다음과 같습니다

위 명령을 사용하여 하위 디렉터리를 어떻게 삭제할 수 있나요?

(현재 날짜를 기준으로 대상 디렉토리에 하위 디렉토리를 생성하는 mysql 백업 스크립트를 추가했습니다).

위 명령을 다음과 같이 적용해 보았습니다.

find /backups/etcbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varlogsbak/ -mtime +2 -exec rm -rf {} \; && find /backups/varmysqlbak/ -mtime +7 -exec rm -rf {} \; && find /backups/varmongobak/ -mtime +7 -exec rm -rf {} \;

그러나 이전 하위 디렉터리는 전혀 삭제되지 않습니다.

목표는 대상 디렉터리에 존재할 수 있는 파일과 디렉터리를 삭제하는 것입니다.

예를 들어:

/backups/etcbak/filename (where "filename" is deleted after 7 days)

그리고

/backups/etcbak/dirname ("dirname"이라는 하위 디렉터리와 그 내용도 7일 후에 삭제됩니다.)

이거 해킹하는 방법 아시는 분 있나요? 감사해요

답변1

내 접근 방식은 기준에 따라 파일을 삭제한 다음 빈 디렉터리를 삭제하는 것입니다.

find /backups/etcbak /backups/varmysqlbak /backups/varmongobak -depth -type f -mtime +7 -delete
find /backups/varlogsbak -depth -type f -mtime +2 -delete

find /backups/etcbak /backups/varlogsbak /backups/varmysqlbak /backups/varmongobak -mindepth 1 -depth type d -delete 2>/dev/null

-depth암시적으로 꼭 필요한 것은 아니지만 -delete, 이를 확인하고 활성화되어 있음을 상기시키는 것이 유용하다고 생각합니다.

관련 정보