14일보다 오래된 10,000개 이상의 파일을 검색한 다음 찾은 파일을 대상으로 rsync할 수 있기를 원합니다.
이 두 명령을 결합하는 방법이 있습니까?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
답변1
아래 나열된 옵션 중 하나를 사용하여 find 출력을 rsync로 보낼 수 있습니다.
방법 1
이 두 옵션은 매우 유사합니다. 둘 다 디렉터리를 특정 위치로 변경한 다음 해당 find
위치에서 명령을 실행한다고 가정합니다.
$ rsync -avz --remove-sent-files \
--files-from=<(find ./ -mtime +14 -size +10k) ./ /dest
다음에서 목록을 파이프할 수도 있습니다.
$ find ./ -mtime +14 -size +10k -print0 \
| rsync -av --files-from=- --from0 ./ /dest
방법 #2
이 방법은 어디에서나 실행할 수 있습니다.
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync -av --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: 파일이 발견된 명령줄 인수의 이름과 파일 이름이 제거되었습니다. 이렇게 하면 먼저 src 디렉토리에 CD를 넣지 않고도 src 디렉토리를 사용할 수 있습니다.