다음 명령을 사용하여 /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
-
당신은 또한 볼 수 있습니다
man rsync
- 찾기 결과를 반복하는 것이 왜 나쁜 습관입니까?
find
using rsync
에서 출력을 전달하려는 의도 에 대해 별도의 질문을 하고 싶을 수도 있습니다 --from-file
. 아마도 당신이 원하는 것을 성취하는 더 안전한 방법이 있을 것입니다. 예를 들어, -print0
with를 사용하고 with와 페어링 할 수 있습니다 find
. 시스템 설명서를 참조하세요.-from0
rsync
rsync
find
답변2
find와 함께 -exec 옵션을 사용할 수 있습니다.
find -type f -name /tmp/file -exec rsync -R -av {} root@server:/ \;
{}는 이전 결과의 결과입니다. 즉, -exec 이전에 발견된 모든 것입니다. ;exec의 끝을 나타냄