cron에서 실행되고 특정 파일 이름에 대한 경로를 검색하는 스크립트를 만들려고 합니다. 경로에 동일한 파일 이름을 가진 폴더가 더 있을 수 있습니다. 해당 항목이 발견되고 2일 이상 지난 경우 상위 폴더와 모든 콘텐츠를 rsync하십시오. 이 부분은 작동하지만 2일보다 오래된 "filename.txt"만 동기화합니다.
#!/bin/sh
find /path/ -name "filename.txt" -type f -mmin -$((60*48)) -exec rsync --ignore-exsiting -az --log-file=/path/ {} /source /destination \;
답변1
나는 그것을 통해 가정하고있다상위 폴더방금 filename.txt가 있는 폴더를 의미했습니다.
-printf '%h\n'
-exec를 사용하는 대신 find를 사용하여 이 폴더 이름을 인쇄할 수 있습니다 . 이를 쉘 루프나 xargs로 파이프할 수 있습니다. 예를 들면 다음과 같습니다.
find /path/ -name "filename.txt" -type f -mtime -2 -printf '%h\n' |
xargs -i rsync ... {} /destination \;
내 생각엔 이것을 rsync에 추가해야 할 것 같습니다 -R
. 그렇지 않으면 모든 디렉터리가 대상에 쌓이게 됩니다.