스크립트에서 find 및 rsync를 사용하고 싶습니다.

스크립트에서 find 및 rsync를 사용하고 싶습니다.

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. 그렇지 않으면 모든 디렉터리가 대상에 쌓이게 됩니다.

관련 정보