저는 이 명령을 사용하여 서버의 오래된 백업을 삭제했습니다.
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
, 이를 확인하고 활성화되어 있음을 상기시키는 것이 유용하다고 생각합니다.