문제
Mac A와 Mac B에서 데이터를 저장하는 서버가 있습니다.
rsync를 사용하여 Mac간에 파일을 업데이트합니다.
다음 코드를 실패로 실행합니다
#!/bin/zsh
# to copy files from my server to my folder
rsync -Pav $Masi:~/private/ ~/Dropbox/Courses/math/
# to copy files from my folder to my server
rsync -Pav ~/Dropbox/Courses/math $Masi:~/private/
다음 오류 메시지가 표시됩니다
ssh: connect to host port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at io.c(600) [receiver=3.0.5]
ssh: connect to host port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.5]
SSH 키가있어 문제없이 SCP를 사용할 수 있으므로 연결이 작동해야합니다.
내 서버와 내 Mac 중 하나 사이에 rsync를 어떻게 사용할 수 있습니까?
해결책
나는 이것을 많이했었다. 몇 가지 제안을 테스트했습니다.
- 전체 사용자@호스트 패턴을 철자하십시오
- SSH 연결 실행 rsync를 먼저 실행하십시오. 먼저 지문을 승인해야 할 수도 있습니다.
- 확장 된 속성을 보호하기 위해 깃발을 전달하지 않는 것 같습니다. 이것은 OS X에서 파일이 깨진 파일을 얻을 수 있습니다. 자원 포크가 필요하지 않으면 괜찮지 만 대부분은 필요합니다.
내 테스트 케이스 :
$ rsync -Pav ~/Desktop/ me@remote.example.com:~/rsyc-test
이 경우 ~/데스크탑 내의 모든 파일은 내 집의 원격 호스트에 복사되었습니다. 디렉토리 'rsyc-test'가 존재하지 않았기 때문에 저를 위해 만들어졌습니다. 데스크탑에 .app을 가지고 있었는데 놀랍게도 작동했습니다. 일부 .webloc 파일조차도 그것을 신뢰하지는 않지만 작동하고 작동하는 것처럼 보입니다.
-e 플래그를 추가하는 것이 좋습니다
-E, --extended-attributes Apple specific option to copy extended attributes, resource forks, and ACLs. Requires at least Mac OS X 10.4 or suitably patched rsync.
나는 새로운 테스트를 실행했고, 계선 북마크를 데스크탑으로 옮겼습니다. 그들이 SANS Resource Forks를 복사하면 사실을 알고 있습니다. -e없이 실행하는 대 -e와 함께 실행되면 xfered 데이터에는 152 바이트의 차이가 있습니다. 원격 시스템의 첫 번째 파일은 작동하지 않았으며 두 번째 전송 파일이 작동했습니다.
나는 당신의 예에서 당신의 경로 중 하나가 ~/dropbox이라는 것을 알 수는 없지만, 앱인 Dropbox는 현재 Resource Forks를 전혀 지원하지 않기 때문에 이것은 중요하지 않을 수 있습니다. 그러나 앞으로 계획이 있다고 들었습니다.
당신은 또한 -벨트 깃발을 보내지 않습니다. 최종 목표가 데이터의 거울이라면, 당신의 최종 목표가 지속적으로 성장하는 백업이라면, 소스에 있던 모든 것을 유지하고 부족한 것은 그것을 얻지 못합니다. -델리트가 좋습니다.
기타 노트 :
바보 같은 .ds_store 파일을 제외 할 수 있습니다 --exclude '.ds_store'
진정한 거울이되도록 RSYNC를 설정할 수도 있으므로 다른 명령을 실행할 필요가 없으며 자세한 내용은 Man 페이지를 참조하십시오.
내 노트북의 데스크탑을 원격 기계로 밀어 붙이는 마지막 작업 명령 :
$ rsync -PEav --delete --exclude '.DS_Store' ~/Desktop/ me@remote.example.com:~/rsycn-test
다른 팁
"$ masi"를 확인하십시오. 그게 당신이 도달하려는 호스트 이름인가요?
다음 명령을 시도하여 디버깅하십시오.
rsync -e 'ssh -v' -Pav $Masi:~/private/ ~/Dropbox/Courses/math/
그만큼 연결이 거부되었습니다 일반적으로 리모컨 (예 : 방화벽)에 연결 문제가있을 때 발생합니다.
귀하의 경우 문제는 그 것입니다 $Masi
변수는 비어 있습니다. 가변적이지 않은 경우 사용하십시오 Masi
.
이 오류에 따라 :
SSH :
connect to host port 22: Connection refused
이후 위의 이중 공간을 주목하십시오 host
단어.
그만큼 호스트에 연결하십시오 메시지는 어떤 호스트에 어떤 호스트를 말하지 않으므로, 빈 호스트에 연결하려고합니다. 따라서 호스트 이름의 오타처럼 들립니다.