9

Я пытался использовать rsync на OSX для Linux или Unix, над которым у меня мало контроля. Я делал что-то вроде этого

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

Возвращенная ошибка:

bash: rsync: команда не найдена rsync: соединение неожиданно закрыто (пока получено 0 байт) [приемник] Ошибка rsync: удаленная команда не найдена (код 127) в /SourceCache/rsync/rsync-37.3/rsync/io.c(452) [получатель = 2.6.9]

Однако после прочтения документации я начинаю думать, что мне действительно нужно установить демон rsync на удаленном хосте.

  1. Нужно ли устанавливать сервер rsync на удаленном хосте?
  2. Бесплатные альтернативы - GUI или не-GUI - которые не требуют установки чего-либо на удаленном хосте?

Спасибо!

4 ответа4

21

Вам нужна команда rsync на сервере, но вам не нужно запускать демон.

Получите бинарный файл rsync, который работает на сервере, поместите его где-нибудь в вашем доме и добавьте этот флаг в командную строку: --rsync-path=/home/user/path/to/rsync .

Если вы не хотите копировать rsync на серверы, вы можете использовать scp или sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

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

5

Вам нужно иметь rsync на удаленном хосте - не обязательно сервер rsync (который, я считаю, не будет обрабатывать соединение ssl в любом случае), но rsync на локальном блоке должен взаимодействовать с rsync на удаленном блоке. Вы используете ssh для связи двух.

Предполагая, что rsync существует в удаленном окне, он не находится в пути поиска по умолчанию для вашего ssh, вошедшего в оболочку. В зависимости от ваших предпочтений и разрешений на удаленном боксе, вы можете попробовать

  • используя опцию --rsync-path =
  • изменение пути по умолчанию для вашей удаленной оболочки ssh
  • добавление псевдонима для rsync в удаленной оболочке ssh
  • изменение выполненной удаленной команды на абсолютный путь к rsync

или что-то подобное. Если rsync как исполняемый файл (заместитель сервера) не существует на удаленном хосте, его необходимо добавить.

1

Нет особого смысла использовать rsync без запуска демона rsync на удаленном хосте, несмотря на предложенное выше решение creative sshfs. Вся идея эффективности в rsync состоит в том, чтобы два экземпляра сравнивали свои локальные копии набора данных, локально вычисляя контрольные суммы, сравнивая их по сети и передавая фактические данные только для тех частей этих файлов, которые фактически различаются.

Если вы используете sshfs или любое сетевое монтирование, оно скрывает только тот факт, что ему нужно скопировать весь набор данных по сети с удаленного хоста, чтобы вычислить контрольные суммы локально, а затем передать различия поверх этого. Было бы быстрее и дешевле удалить все локально и «scp -r».

0

Попробуйте SCP. Поскольку у вас уже есть доступ по SSH, вам не нужно устанавливать что-либо еще на удаленном хосте :)

Для копирования файлов с удаленного хоста на локальный хост используйте:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Или скопируйте файлы с локального хоста на удаленный хост с помощью:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .