ssh를 통한 Rsync는 매번 훌륭하게 작동합니다.
그러나 sftp 로그인 만 허용하고 ssh 로그인은 허용하지 않는 호스트와 rsync를 시도하면 다음 오류가 발생합니다.
rsync -av / source ssh user @ remotehost : / target /
프로토콜 버전 불일치-쉘이 깨끗합니까? rsync error : compat.c (171)의 프로토콜 비 호환성 (코드 2) [sender = 3.0.6]
rsync 매뉴얼 페이지의 관련 섹션은 다음과 같습니다.
이 메시지는 일반적으로 rsync가 전송에 사용하는 스트림에서 원하지 않는 가비지를 생성하는 시작 스크립트 또는 원격 쉘 기능으로 인해 발생합니다. 이 문제를 진단하는 방법은 다음과 같이 원격 셸을 실행하는 것입니다.
ssh remotehost /bin/true > out.dat
그런 다음 out.dat를보십시오. 모든 것이 올바르게 작동하면 out.dat는 길이가 0 인 파일이어야합니다. rsync에서 위의 오류가 발생하면 out.dat에 일부 텍스트 또는 데이터가 포함되어있을 수 있습니다. 내용을보고 그 내용을 만들어 내기 위해 노력하십시오. 가장 일반적인 원인은 비 대화식 로그인에 대한 출력 문이 포함 된 셸 시작 스크립트 (예 : .cshrc 또는 .profile)가 잘못 구성되어 있기 때문입니다.
내 시스템에서 이것을 시도하면 out.dat에서 다음을 생성했습니다.
ssh-dummy-shell : 명령이 허용되지 않습니다.
내가 생각한 것처럼 호스트는 ssh 로그인을 허용하지 않습니다.
다음 링크 는 sshfs와 함께 fuse를 사용하여이 작업을 수행 할 수 있음을 보여줍니다. 그러나 속도가 매우 느리고 생산 용도에 맞지 않습니다.
rsync sftp가 작동 할 가능성이 있습니까?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
이 답변을 참조하십시오 .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port