14 일 이상 10k가 넘는 파일을 검색하고 찾은 파일을 대상으로 재 동기화하고 싶습니다.
이 두 명령을 결합하는 방법이 있습니까?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
답변
아래에 설명 된 옵션 중 하나를 사용하여 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 --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
: 발견 된 명령 행 인수의 이름이있는 파일 이름. 이런 식으로 src 디렉토리를 사용할 수 있으며, 먼저 src 디렉토리로 cd 할 필요가 없습니다.