[unix] 찾아서 rsync?

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 할 필요가 없습니다.

참고 문헌


답변