곧 Rsync를 통해 Ubuntu PC에서 VPS로 파일을 제출하면 모든 것이 잘 진행되지만 Windows에서 동일한 작업을 수행하면 오류가 발생합니다.
rsync: 연결이 예기치 않게 종료되었습니다(지금까지 0바이트 수신).
[수신기] rsync 오류: io.c(235)의 rsync 프로토콜 데이터 스트림(코드 12)에 오류가 있습니다. [수신기=3.1.3]
Linux와 달리 Windows에는 Rsync가 기본으로 설치되어 있지 않지만 Windows PC에는 Rsync를 설치했습니다.
환경 데이터
- 로컬 PC#1: Windows 10
- 로컬 PC#2: Ubuntu 20.04.5
- VPS: 우분투 20.04
준비
명확한 Ubuntu로 VPS를 초기화했습니다. 방정식에서 일부 변수를 제거하기 위해 보안 때문에 실제(내 경우처럼 실험적이지 않은) VPS에서 수행해서는 안되는 몇 가지 작업을 수행했습니다.
- 루트 계정을 사용하여 데이터를 제출하겠습니다.
- 나는 SLL을 사용하지 않을 것이다
또한, 나는/var/www/example.com대상 디렉토리가 생성되지 않아 데이터를 동기화할 수 없다는 오류를 방지하려면 VPS의 디렉토리를 사용하세요.
표적
의 내용을 제출하세요.06-프로덕션빌드VPS에 대한 디렉토리입니다.
실험 흐름
Windows 터미널에서 입력
rsync -azve ssh --progress 06-ProductionBuild [email protected]:/var/www/example.com
비밀번호가 요청되었습니다. 비밀번호를 입력한 후 다음을 얻었습니다.
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
방금 잘못된 비밀번호를 입력했다면 오류가 발생했습니다 Permission denied, please try again
.
이제 Ubuntu PC에서 동일한 명령이 실행됩니다.
모든 것이 괜찮았다.
몇 가지 힌트를 주세요.
WSL에서 시도했는데 괜찮았습니다. 뭔가 문제가 있는 것 같아Windows에서 재동기화.
답변1
분명히 이것은 ssh
단지 -e ssh
. (보다 정확하게는 (cw)rsync 설치 디렉터리의 PATH 우선순위가 bin
해당 다른 경로보다 낮기 때문일 수 있습니다.)
내 테스트에서 가장 간단한 해결 방법은 대신 에 함께 제공되는 (cygwin)을 사용 -e /bin/ssh
하도록 지정하는 것입니다. (cygwin "마술"은 초콜릿이든 아니든 경로의 루트를 자동으로 해결해야 합니다.)rsync
ssh
(원인 발견에 대한) 공로가 댓글로 이동합니다.여기, 거기에서 제공되는 접근 방식은 불필요하게 서투른 것처럼 보입니다. (글쎄, Microsoft의 빌드를 사용할 이유가 없다면 말이죠 ssh
.)
편집: 실제로 연결된 올바른 설명에 제공된 설명이 나에게는 정확히 사실이 아닌 것 같습니다. 내 테스트에서 "시스템" ssh는 실제로 known_hosts
다른 위치에서 사용되지만 처음으로 연결을 시도하고 자체 서버를 known_hosts
성공적으로 만들 때 서버를 목록에 추가하라는 메시지가 표시됩니다. 나중 시도에서도 나에게 묻지 않았으므로 분명히 다시 읽을 수 있는 자체 항목을 찾을 수 있습니다. 그러므로 나는 그의 제안이 그에게 어떻게 도움이 되었는지 전혀 모르고 어쨌든 옵션/경로를 지정하는 것이 나에게 효과적이지 않습니다.