Синхронізуйте локальний каталог із віддаленим каталогом у Linux


14

У мене папка з кількома файлами в ній і деяким простором на веб-сервері. Я хочу зробити двонаправлену синхронізацію між локальною папкою та віддаленою в Linux, саме на час модифікації. Як це зробити? btw Я не можу нічого встановити на сервер, для всіх намірів і цілей це просто місце.

Примітка. У мене вже встановлені пари ключів rsa, так що це може відбуватися безшумно.

Відповіді:


12

Інструментом вибору для односпрямованої синхронізації є rsync, а інструментом вибору для двонаправленої синхронізації є Unison . Обидва вимагають, щоб виконуваний файл був доступний з обох сторін. Якщо ви можете зробити файл виконуваним на стороні сервера, опустіть унісон бінарний файл і зробіть його виконуваним.

Якщо у вас локально є Linux, * BSD, Solaris або Mac OS X, ви, ймовірно, можете використовувати файлову систему FUSE для того, щоб простір веб-сервера відображався як локальна файлова система - sshfs повинен працювати, оскільки, здається, у вас є доступ до ssh. Потім використовуйте унісон "локально".

Також зауважте, що більшість програм керування версіями (CVS / Subversion, а також розподілений VCS) мають синхронізацію як попутну функцію (реєстрація на одній машині, а на іншій).


4

Якщо він встановлений на сервері, використовуйте rsyncйого зборку саме для цієї роботи.

Щоб отримати двонаправлене, зробіть це (цитата з http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1285799008594+28353475&threadId=1278777 ):

Для двобічної синхронізації каталогу /src/fooна hostAдо /dest/fooпро hostB, включаючи всі підкаталоги, ви б запустити ці команди на hostA:

rsync -auz /src/foo hostB:/dest 
rsync -auz hostB:/dest/foo /src

Перша команда виштовхує всі файли, які новіше на hostAдо hostB.

Друга команда буде тягнути всі файли, які новіше на hostBдо hostA. Найважливіші варіанти:

під час копіювання необхідно зберегти час модифікації файлів. -aробить це та інші речі;

Якщо ви хочете зберегти лише модифікаційні часи, скористайтеся -tнатомість.

Щоб пропустити будь-які новіші файли в пункті призначення: -uробить це


наскільки я читав, rsync не робить двонаправлене, і коли я намагаюся, це дає мені помилку "Невідповідність версії протоколу - чи ваша оболонка чиста?"
Ендрю Редд

hostanswers.net/linux-hosting/rsync-protocol-version-mismatch може допомогти вам виправити річ невідповідності версії. На двонаправлену річ я оновив свою відповідь.
tante

1
Rsync взагалі не пристосований до двонаправленої синхронізації. З одного боку, воно не попередить вас, якщо є конфлікт. Використовуйте натомість Unison, це правильний інструмент для роботи.
Жил "ТАК - перестань бути злим"

1
Це жахливо виходить з ладу, якщо сервер A буде в майбутньому від сервера B. У моєму випадку я на 13 годин випереджаю віддалений сервер.
Тім Пост

1

Кожен раз, коли вам потрібна синхронізація між двома папками rsync, це чудовий гнучкий вибір. Проблема полягає в тому, що rsync не підтримує ftp-протокол. Гарне рішення для цього - curlFtpFS :

CurlFtpFS - це файлова система доступу до хостів FTP на основі FUSE та libcurl.

З curlFtpFs досить легко включити віддалену папку ftp у вашу файлову систему.

Це короткий приклад, який показує використання обох інструментів:

curlftpfs -r -s ftp.foobar.com /foo
rsync -a /foo/ /bar
umount /foo

Прочитайте сторінку сторінки для отримання додаткової інформації.

Якщо ви не хочете таких зусиль, щоб встановити curlFtpFS і просто хочете тримати деякі файли синхронізованими, є багато інструментів ftp, які пропонують такі функції синхронізації:

  • FTPSync.pl - простий скрипт PERL для синхронізації локального та віддаленого каталогу
  • weex - неінтерактивний FTP-клієнт для оновлення веб-сторінок
  • filezilla - FTP-клієнт GUI з великою кількістю функцій
  • ...

1. Rsync не корисний для двонаправленої синхронізації, замість цього використовуйте Unison. 2. Звідки взявся FTP? згадка ключів RSA у питанні скоріше говорить про ssh (і, отже, sshfs).
Жил "ТАК - перестань бути злим"

Ви праві, FTP не згадується в питанні. Якщо чесно, я думаю, що це було поєднанням "веб-простору" та "це просто космос". і трохи моєї втоми вчора.
ехокс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.