Невозможно выполнить rsync между моим сервером и моим Mac

StackOverflow https://stackoverflow.com/questions/813883

  •  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?

Это было полезно?

Решение

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

<Ол>
  • Изложите весь шаблон user @ host
  • Сначала запустите соединение ssh без rsync, может потребоваться сначала подтвердить ваш отпечаток пальца
  • Похоже, вы не передаете флаг для защиты расширенных атрибутов, это может привести к повреждению файлов в 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 таким образом, чтобы он был настоящим зеркалом, поэтому вам не нужно будет запускать другую команду, подробности см. на странице руководства.

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

    $ 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 не указано, с каким хостом вы пытаетесь подключиться к пустому хосту. Так что это звучит как опечатка в имени хоста.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top