Невозможно выполнить rsync между моим сервером и моим Mac - PullRequest
4 голосов
/ 02 мая 2009

У меня есть сервер, на котором я храню данные с 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.

Как вы можете использовать rsync между моим сервером и одним из моих Mac?

Ответы [ 3 ]

4 голосов
/ 02 мая 2009

Я много чего делал. Просто запустил тест, несколько предложений.

  1. Укажите весь шаблон user @ host
  2. Сначала запустите ssh-соединение без rsync, может потребоваться сначала подтвердить ваш отпечаток пальца
  3. Похоже, вы не передаете флаг для защиты расширенных атрибутов, это может привести к повреждению файлов в OS X. Если вам не нужны вилки ресурсов, у вас все в порядке, но в большинстве случаев они вам нужны.

Мой тестовый пример:

$ rsync -Pav ~/Desktop/ me@remote.example.com:~/rsyc-test

В этом случае все файлы в ~ / Desktop были скопированы на удаленный хост, в моем домашнем каталоге. Поскольку каталог 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.

Я провел новый тест, переместил закладку Interarchy на свой рабочий стол, я точно знаю, что это разрыв, если они скопированы без ресурсов. При работе без -E по сравнению с -E разница между данными в xfered составляет 152 байта. Первый файл на удаленной машине не работал, второй переданный файл работал.

Не могу не заметить, что в вашем примере один из ваших путей - это ~ / Dropbox, так что это все может не иметь значения, поскольку приложение DropBox вообще не поддерживает вилки ресурсов, хотя я слышал, что в будущее.

Вы также не отправляете флаг --delete, если ваша конечная цель является зеркалом ваших данных, вы не получаете этого, если ваша конечная цель - резервные копии, которые постоянно растут, сохраняя все, что когда-либо было в источнике , отсутствие --delete это хорошо.

Другие примечания:
Вы можете исключить эти глупые файлы .DS_Store --exclude '.DS_Store'

Вы также можете настроить rsync таким образом, чтобы он был настоящим зеркалом, поэтому вам не нужно будет запускать другую команду, подробности см. На странице man.

Моя последняя рабочая команда для переноса рабочего стола моего ноутбука на удаленный компьютер:

$ rsync -PEav --delete --exclude '.DS_Store' ~/Desktop/ me@remote.example.com:~/rsycn-test
1 голос
/ 02 декабря 2016

Отказано в соединении обычно происходит, когда существует проблема с подключением к удаленному (например, брандмауэр).

В вашем случае проблема в том, что переменная $Masi пуста. Если это не переменная, используйте Masi.

Согласно этой ошибке:

ssh: connect to host port 22: Connection refused

Обратите внимание на двойной пробел выше после слова host.

в сообщении connect to host не указано, к какому хосту, поэтому вы пытаетесь подключиться к пустому хосту. Так что это звучит как опечатка в имени хоста.

1 голос
/ 02 мая 2009

Отметьте «$ Masi». Это имя хоста, которого вы пытаетесь достичь?

Попробуйте следующую команду для его отладки:

rsync -e 'ssh -v' -Pav $Masi:~/private/ ~/Dropbox/Courses/math/
...