내가 소유한 것
현재 90일이 지난 디렉터리와 파일을 찾아 삭제하도록 cron이 설정되어 있습니다.
나는 필요하다
90일이 지난 디렉터리와 파일을 삭제할 때 crontab이 두 디렉터리를 무시하도록 하고 싶습니다.
내가 지금까지 무엇을 했는지
이 crontab은 디렉터리와 파일을 제거하고 dir1을 무시하지만 두 번째 -not -path에 지정했음에도 불구하고 dir2에서 디렉터리와 파일을 계속 제거합니다.
00 4 * * * sudo find /home/*/* -type d -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm -r "{}" \;
02 4 * * * sudo find /home/*/* -type f -not -path "/home/dir1/*" -not -path "/home/dir2/*" -mtime +90 -exec rm "{}" \;
실제적인 문제
디렉터리/파일을 찾고 삭제할 때 두 개의 디렉터리를 어떻게 무시할 수 있습니까? 위의 예에 따라 작동하도록 할 수 없으므로 -not -path를 두 번 지정하면 됩니까?
답변1
첫째, crontab
명령 필드가 가 아닙니다 bash
. bash
명령 필드를 남용하기보다는 다른 곳에 저장된 스크립트를 호출해야 합니다 .
읽고man find xargs
#!/bin/bash
find /home/*/* -type d \( -name dir1 -o -name dir2 \) -prune -type f -mtime +60 -print0 | \
xargs -0 -r rm