파이프라인 출력 위치 지정

파이프라인 출력 위치 지정

나는 이런 일을하고 싶다 :

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서버에는 단 하나의 연결만 설정되며 모든 파일은 해당 연결을 통해 전송됩니다.

-aor를 사용하는 경우 or를 사용 --archive하면 해당 옵션(일부임에도 불구하고)이 비활성화되므로 재귀를 원하는 경우 명시적 으로 --files-from추가해야 합니다 .-r--recursive-a--files-from

관련 정보