![90일이 지난 디렉터리를 찾아서 삭제하지만 2개의 하위 디렉터리를 무시하는 cron을 어떻게 만들 수 있나요?](https://linux55.com/image/181306/90%EC%9D%BC%EC%9D%B4%20%EC%A7%80%EB%82%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%B0%BE%EC%95%84%EC%84%9C%20%EC%82%AD%EC%A0%9C%ED%95%98%EC%A7%80%EB%A7%8C%202%EA%B0%9C%EC%9D%98%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EB%AC%B4%EC%8B%9C%ED%95%98%EB%8A%94%20cron%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%A7%8C%EB%93%A4%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
내가 소유한 것
현재 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