rsync: 파이프에서 파일 목록 읽기

rsync: 파이프에서 파일 목록 읽기

다음 명령을 사용하여 /tmp/file파일을 원격 서버로 전송할 수 있습니다 .rsync

rsync -R -av /tmp/file root@server:/

하지만 파이프할 파일 목록을 어떻게 제공합니까? --files-from=옵션을 사용해 보았지만 /dev/stdin작동하지 않습니다.

echo /tmp/file | rsync -R -av --files-from=/dev/stdin root@server:/

(일반 파일에서도 작동하지 않습니다)

예를 들어, find의 출력을 사용할 수 있도록 파이프에서 rsync를 읽을 수 있습니까?

답변1

rsync파일에서 경로 이름을 읽는 경우에도 소스 및 대상 매개변수를 지정해야 합니다.

echo /tmp/file | rsync -av --files-from=- / user@server:/

읽은 경로 이름은 소스 디렉토리를 rsync기준으로 합니다 . 이 옵션은 사용될 때 암시적 이며 지정된 표준 입력을 사용할 수 있습니다 ./-R--files-from-

당신은 또한 볼 수 있습니다

findusing rsync에서 출력을 전달하려는 의도 에 대해 별도의 질문을 하고 싶을 수도 있습니다 --from-file. 아마도 당신이 원하는 것을 성취하는 더 안전한 방법이 있을 것입니다. 예를 들어, -print0with를 사용하고 with와 페어링 할 수 있습니다 find. 시스템 설명서를 참조하세요.-from0rsyncrsyncfind

답변2

find와 함께 -exec 옵션을 사용할 수 있습니다.

find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;

{}는 이전 결과의 결과입니다. 즉, -exec 이전에 발견된 모든 것입니다. ;exec의 끝을 나타냄

관련 정보