rsync는 소스 호스트가 명령이라고 생각합니다

rsync는 소스 호스트가 명령이라고 생각합니다

그래서 .ssh를 사용하여 SSH를 통해 연결된 원격 호스트에서 내 Mac의 로컬 폴더로 파일을 다운로드해 보았습니다 rsync. 내가 사용하는 명령은 다음과 같습니다

$ rsync --progress -avz -e "ssh [email protected] -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

프롬프트에는 다음과 같은 내용이 나와 있습니다.

[email protected]'s password: [I typed the password here]
bash: 1.2.3.4: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]

1.2.3.4원격 호스트 주소가 명령으로 해석되는 게 이상한 것 같은데요? ! 어떻게, 왜 이런 일이 일어났는지 잘 모르겠습니다. 예상 결과를 얻고 파일 복사를 시작하려면 명령을 어떻게 업데이트해야 합니까?

답변1

-e 플래그에 ssh 명령의 user@host 부분을 포함하고 싶지 않을 것이라고 확신합니다. 노력하다

rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

답변2

이 명령에서 (또는) 옵션 과 함께 사용하면 ssh원격 호스트를 이름으로 언급할 필요가 없습니다. 이는 명령에서 소스 사양의 일부이기 때문입니다.-e--rshrsync

귀하의 경우에는 사용하기에 충분할 것입니다

rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/

rsync-e소스 경로와 함께 제공된 명령이 실행됩니다. 다른 것을 사용하면 -v다음과 같이 보일 것입니다.

opening connection using: ssh -i "~/.ssh/keyFile" [email protected] -l root 1.2.3.4 rsync --server --sender -vvlogDtpre.iLfxC . /path/to/files/

1.2.3.4여기서는 사용자로서 원격 호스트에서 실행되는 명령으로 해석되는 것을 볼 수 있습니다 root.실제명령줄 인수로 실행되어야 합니다).

rsync파일 복사의 원본 측에서 "발신자"를 시작하고 대상 측에서 "수신자"를 시작합니다. 그런 다음 두 프로세스는 실제 데이터와 체크섬 등을 서로 전송하여 파일 복사를 수행합니다. 위에 표시된 명령은 원격 호스트에서 보낸 사람을 시작(시도)하는 데 사용되는 명령입니다 ssh. 등은 rsync이 목적으로 사용되는 --server --sender내부 명령줄 플래그 입니다. rsync매뉴얼 rsync에는 기본적으로 "이 옵션을 직접 사용하지 마십시오"라고 나와 있습니다.

rsync귀하의 경우, 원격 호스트의 발신자와 통신하는 수신자(로컬 실행)에 문제가 있음 을 오류 메시지에서 확인할 수 있습니다 . 이는 보낸 사람이 올바르게 시작되지 않았기 때문이며 이는 잘못된 ssh명령으로 인해 발생합니다.

관련 정보