해봤는데 놀랍게도 안되네요
#!/bin/bash
cd /home/test/backup
cp -a vaults backup/vaults-$(date +%d-%m-%y-%S)
find backup/vaults-* -mtime +5 -exec rm -r {} \;
디렉터리를 백업한 다음 5일보다 오래된 모든 디렉터리를 삭제하려면 이 파일이 필요합니다. 모든 것을 삭제하고 다음과 같이 출력합니다.
find: `backup/vaults-27-02-17-41': No such file or directory
답변1
나는 보통 그러한 백업에 tar를 사용합니다. 귀하의 상황에 대한 예는 다음과 같습니다.
tar -czf /backup/vault-$(date -I).tar.gz vaults/*
find backup/ -type f -iname "*.tar.gz" -mtime +5 -delete
여기서 명령을 사용하면 tar
타임스탬프가 포함된 압축된 백업 아카이브를 얻을 수 있습니다. 그런 다음 find
백업 디렉터리에서 tar.gz로 끝나는 파일만 찾아 해당 파일이 5일보다 오래된 경우 삭제합니다.
하지만 tar를 사용할 수 없고 cp를 사용하고 싶다면 find를 사용하세요. 그러면 거의 맞췄지만 결과는 다음과 같아야 합니다.
find backup/ -mindepth 1 -maxdepth 1 -type d -iname "vaults-*" -mtime +5 -exec rm -rf {} \;
값이 1이고 find가 백업 디렉터리만 나열하는 minlength 및 maxlength 스위치에 유의하세요. 그것들이 없으면 find는 명령을 실행한 후 해당 디렉토리에 들어가려고 시도하여 rm
사용자와 같은 오류가 발생하거나 상위 디렉토리도 삭제하려고 시도할 수 있습니다. 또한 rm
비어 있지 않은 디렉터리도 삭제하고 삭제하는 동안 아무 것도 묻지 않도록 명령을 "-rf" 옵션과 함께 실행해야 합니다.
당신은 또한 사용을 고려해야합니다스냅 사진이 백업을 위해. 이는 저장 공간을 절약하고 사용자가 직접 구성할 수 있는 보존 정책에 따라 삭제를 처리합니다.