Rsync через ssh чи щось інше?


10

Я намагався використовувати rsync на OSX для Linux або Unix box, над яким я не маю особливого контролю. Я робив щось подібне

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

Помилка повернута:

bash: rsync: команда не знайдена ) [приймач = 2.6.9]

Однак, прочитавши документи, я починаю думати, що мені би фактично потрібно було встановити демон-rsync на віддалений хост.

  1. Потрібно встановити сервер rsync на віддалений хост?
  2. Безкоштовні альтернативи - GUI або non-GUI - які не вимагають нічого встановлювати на віддаленому хості ?

Дякую!


1
Які конкретні проблеми у вас виникають із вашою поточною командою?
fideli

@fideli, вибач, забув про це. Питання для редагування зараз
Dan Rosenstark

1
Дякую за це запитання, але чи можете ви позначити його rsyncбудь-ласка?
Ендрю Грімм

Відповіді:


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 буде запускатися повністю локально, але зміни будуть поширюватися на сервер.


Мені це рішення дуже подобається, особливо тому, що сервер - це дешевий план хостингу на GoDaddy, і я сумніваюся, що зможу запустити rsync на сервері. Поки що +1!
Дан Розенстарк

Який найпростіший шлях для встановлення sshfs на OSX? MacFuse чи є щось простіше?
Дан Розенстарк

MacFuse + (MacFusion або sshfs-static-leopard), я думаю (я не користувач OSX)
Tobu

Так, MacFuse це робить. Просто, що сторінка завантаження для бінарного файлу sshfs надає вам двійковий файл із розширенням .gz. Тож вам доведеться перейменовувати його, а не руйнувати. Дратівливо, але нормально зараз! Спасибі
Ден Розенстарк

6

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

Якщо припустити, що rsync існує у віддаленому вікні, він не знаходиться у шляху пошуку за замовчуванням для вашого ssh, який увійшов у оболонку. Залежно від ваших уподобань та дозволів на віддаленому вікні, ви можете спробувати

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

чи щось подібне. Якщо rsync як виконуваного (віце-сервера) не існує на віддаленому хості, його доведеться додати.


Це було корисно, тому +1, але мені цікаво, як вказати стартовий каталог для rsync на стороні Windows, якщо я запускаю його з Mac на ПК так: superuser.com/questions/1462861/…
Ryan

1

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

Якщо ви використовуєте sshfs або будь-яке мережеве кріплення, він приховує лише той факт, що він повинен скопіювати весь набір даних по всій мережі з віддаленого хоста для того, щоб обчислити контрольні суми локально, а потім передати відмінності поверх цього. Було б швидше і дешевше видалити все локально і "scp -r" партію.


3
Не зовсім тому, що rsync перевіряє, чи файли змінені за розміром та часовою міткою, і це все-таки набагато ефективніше, ніж scp'ing всіх файлів. Але дійсно, механізм інкрементального оновлення rsync у файлах не має сенсу для sshfs.
Jaap Eldering

0

Спробуйте SCP . Оскільки ви вже отримали доступ до ssh, вам більше нічого не потрібно встановлювати на віддалений хост :)

Щоб скопіювати файли з віддаленого хосту на localhost, використовуйте:

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

Або скопіюйте файли з localhost на віддалений хост за допомогою:

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

1
Дякую Лі, SCP - це чудово, але він не робить "синхронізацію" так?
Dan Rosenstark

1
це повинен бути невеликий "r":scp -r
0x4a6f4672
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.