나는 이런 일을하고 싶다 :
echo myserver:~/dir/2/ | rsync -r HERE /local/path/
명령에 지정된 위치로 출력을 리디렉션하고 싶습니다. 에코 내용은 "여기"로 이동합니다. 이를 수행하는 가장 쉬운 방법은 무엇입니까?
답변1
xargs
이 요구 사항을 정확하게 사용할 수 있습니다 . -I
파이프에서 수신된 입력으로 자리 표시자를 사용할 수 있습니다 .
echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/
(또는) 디렉터리 경로 ~
로 확장되지 않는 큰따옴표를 사용하지 마십시오 .HOME
echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/
답변2
이것
rsync -r "$(echo myserver:~/dir/2/)" /local/path/
가장 간단한 방법입니다.
파이프는 표준 출력을 표준 입력에 연결합니다. 여기에서는 출력이 매개변수로 들어가길 원하므로 클래식 파이프가 아닌 다른 것이 필요합니다.
그 것은명령 대체( $()
).
답변3
rsync
다음 명령을 사용하여 파일이나 표준 입력으로 다운로드할 파일 목록을 제공 할 수 있습니다 --files-from
.
echo "dir/2/" | rsync --files-from=- -r user@server: /local/path/
표준 입력에서 읽는 원인이 됩니다 -
. 이 방법으로는 서버를 프로비저닝 rsync
할 수 없습니다 . rsync
서버에는 단 하나의 연결만 설정되며 모든 파일은 해당 연결을 통해 전송됩니다.
-a
or를 사용하는 경우 or를 사용 --archive
하면 해당 옵션(일부임에도 불구하고)이 비활성화되므로 재귀를 원하는 경우 명시적 으로 --files-from
추가해야 합니다 .-r
--recursive
-a
--files-from