Как стать автором
Обновить

Unison: настройка и автоматизация двусторонней синхронизации каталогов на двух серверах

Время на прочтение4 мин
Количество просмотров12K
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

Комментарии 6

Стоит заметить что у Unison есть недостаток который может оказаться существенным в некоторых случаях — он не умеет синхронизировать POSIX ACL в частности и расширенные атрибуты вообще.

Мне одному показалось что rsync делает то же самое?
А lsyncd еще и умеет это делать не по крону, а по событию работы с файлами…

rsync это делает в одну сторону. Если вы можете гарантировать что изменения всегда выполняются только в одном месте в один временной промежуток — да, можно и rsync.


Если вы изменили файл a на host-a и файл b на host-b, то всё ещё можно обойтись rsync выполнив его на обоих хостах с флагом -u, но если вы начнёте ещё удалять/переименовывать файлы, или менять содержимое одного файла сразу на обоих хостах — то тут уже начнутся проблемы, которые как раз и призван решать unison, ибо он в теме и знает что где когда было в прошлый раз.

Существует проект Syncthing, кроссплатформенный с открытым исходным кодом. Синхронизирует даже когда хосты не видят друг другу напрямую в сети (например, оба за NATом) через промежуточные relay хосты. Трафик, разумеется, зашифрован.
Пробовал в прошлом году оба решения. Скорость синхронизации Syncthing оказалась в несколько раз медленнее. В итоге сварганил init-скрипт для freenas, чтобы unison работал в режиме демона и синхронизировал в режиме реального времени без задания планировщика.
Ну, как мне кажется, что-бы обойтись без крона, можно закостылить при помощи inotifywait А если используется systemd, так и вовсе штатными средствами systemd.path.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий