Невозможно выполнить rsync между моим сервером и моим Mac
-
03-07-2019 - |
Вопрос
У меня есть сервер, на котором я храню данные с 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?
Решение
Я часто делал это. Просто запустил тест, несколько предложений.
<Ол> Мой тестовый пример:
$ 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 таким образом, чтобы он был настоящим зеркалом, поэтому вам не нужно будет запускать другую команду, подробности см. на странице руководства.
Моя последняя рабочая команда - перенести рабочий стол моего ноутбука на удаленный компьютер:
$ 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:
подключиться к хост-порту 22: соединение отклонено
Обратите внимание на двойной пробел выше после слова host
.
в сообщении connect to host не указано, с каким хостом вы пытаетесь подключиться к пустому хосту. Так что это звучит как опечатка в имени хоста.