Как настроить Unison для реального peer-to-peer?

У меня есть несколько устройств, и я рассматриваю их синхронизацию с Unison .

Устройства не работают все время, они отключены на несколько часов в день, не обязательно в одно и то же время. Ни одно из устройств не работает 24 часа в сутки. Поэтому мне нужен реальный одноранговый узел, например, посмотрите, как изменение (помеченное как * ) распространяется от A до B, C, D, хотя ни одно из них не выполнялось во время всех синхронизаций:

 A-on* B-on C-off D-off A-on* B-on* C-off D-off A-off* B-on* C-off D-off A-off* B-on* C-on D-off A-off* B-on* C-on* D-off A-off* B-off* C-on* D-off A-off* B-off* C-on* D-on A-off* B-off* C-on* D-on* 

К сожалению, руководство пользователя Unison рекомендует звездообразную топологию для более чем двух машин:

Использование Unison для синхронизации более двух машин

Unison предназначен для синхронизации пар реплик. Тем не менее, можно использовать его, чтобы синхронизировать большие группы машин, выполняя несколько парных синхронизаций.

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

Несмотря на это, существует ли какой-либо способ добиться реального единомышленника с Unison?

2 Solutions collect form web for “Как настроить Unison для реального peer-to-peer?”

Я всегда использовал Unison в топологии звезды для синхронизации моих четырех машин. Причина этого в том, что это не файловая система версий (например, git), а скорее инструмент синхронизации.

Если вы выбираете распределенную топологию (которую вам нужно будет установить, создав файл конфигурации для каждого устройства и синхронизируя все), вы, несомненно, в конечном итоге сделаете большое количество ручного разрешения конфликтов, что будет мрачным. Это, безусловно, будет иметь место, если вы не делаете только чрезвычайно простые изменения в файлах в системе и только на одном устройстве за раз.

Итак, предложения:

  1. Возьмите дешевый виртуальный сервер с достаточным объемом памяти для данных, которые вы хотите синхронизировать.
  2. Попробуйте распределенную топологию и посмотрите, не вызовет ли это слишком много проблем.

Unison по сути является одноранговым. Именно поэтому рекомендуется использовать звездную топологию: инструмент не имеет понятия о центральном сервере, поэтому пользователю необходимо выполнить его.

Вы, безусловно, можете использовать Unison в одноранговом режиме, но нет никакого чуда: для каждой пары машин (A, B) вам нужно выбрать одну из машин (скажем A) и создать профиль для синхронизации с B . Если у вас есть n машин, вам понадобятся n * (n-1) / 2 профили.

В дополнение к требованию большого количества профилей, вы, вероятно, столкнетесь с противоречивыми изменениями. Это неотъемлемая проблема с вашими требованиями. В частности, ваша сеть может стать секционированной: если вы закончите с D1 = D2 ≠ D3 = D4, у вас есть конфликт между {D1, D2} и {D3, D4}; если вы примирите этот конфликт, синхронизируя D1 с D3, вы получите новую версию на D1 и D3 и разные старые версии на D2 и D4: беспорядок имеет тенденцию к распространению.

Если вы действительно хотите стать чисто одноранговым, я рекомендую использовать инструмент, который поддерживает историю и хорошо подходит для слияния, например git. Даже там звездная топология (т. Е. Центральный репозиторий) лучше всего, потому что она обеспечивает место, имеющее авторитетную последнюю версию. Но если у вас нет центрального репозитория, и, следовательно, ваша история подвержена возникновению конфликта, по крайней мере git даст вам лучшие инструменты для записи истории слияния, чтобы вы могли видеть, какие части конфликтуют (что очень помогает, re пытается разрешить конфликты).

  • Мониторинг последней резервной копии rsync
  • rsync + chmod несколько файлов
  • Rsyncing файлы со специальными символами на USB FAT32
  • rsync для удаленного сервера без пароля
  • Правильный способ создания сжатого, rsyncable зеркала каталога?
  • Как рекурсивно синхронизировать временные метки файлов по серверам?
  • Я пытаюсь скопировать файлы с сервера в мой локальный каталог с помощью rsync.I не хочу копировать файлы, которые были скопированы ранее и удалены
  • Rsync два типа файлов в одной команде?
  • Как rsync chroot без нарушения символических ссылок?
  • Лучший способ синхронизации файлов - копировать только СУЩЕСТВУЮЩИЕ файлы и только если NEWER, чем целевой
  • Интерактивный ssh ​​работает, но не rsync или scp, на OSX
  • Выборочно копировать из коллекции удаленных каталогов
  • Linux и Unix - лучшая ОС в мире.