36시간(2200분) 미만의 파일만 동기화하려면 다음 명령을 사용하세요.
sudo su -c "rsync -vrt --delete --rsync-path='sudo rsync' --files-from=<(find '/home/dir1' -mmin -2200 -exec basename {} \;) '/home/dir1' Maildir"
36시간이 넘은 경우에도 특정 하위 디렉터리의 모든 파일을 가져오는 점을 제외하면 작동합니다. 이는 이러한 하위 디렉터리가 36시간 이내에 생성되지 않았기 때문입니다.
그래서 find
명령을 --files-from
다음과 같이 수정했습니다.
find '/home/dir1' -type f -mmin -2200 -exec basename {} \;
이제 새로운 질문이 생겼습니다. 파일을 저장할 수 없으며 다음과 같은 오류가 많이 발생하여 실패합니다.
rsync: link_stat "/home/dir1/new/blah" failed: No such file or directory (2)
한 번의 rsync를 수행하여 디렉터리를 생성한 다음 다른 rsync를 수행하여 파일을 전송하는 것 외에 이 문제를 해결할 수 있는 다른 방법이 있습니까?
답변1
글쎄, 이것을 가지고 놀고 다른 곳에서 다양한 제안을 종합한 후 나는 다음과 같은 결론을 내렸습니다.
sudo su -c "rsync -vrt --delete --from0 --files-from=<(cd /home/dir; find . -type f -mmin -2200 -print0 ) '/home/dir1' Maildir"
이는 명령을 실행하기 전에 cd
먼저 소스 디렉토리로 이동 합니다 find
. 또한 find 명령의 null 종료 출력을 구문 분석할 수 있도록 rsync에 인수 를 추가하는 -print0
대신 find 명령에 인수를 사용했습니다 .-exec basename {}
--from0