3

Я пытаюсь синхронизировать три машины, на одной из которых я работаю в унисон для синхронизации двух других. Эта «звездная» архитектура рекламируется в руководстве по унисону:

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

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

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

Но после начальной синхронизации с

unison -fat -batch "$HOME/dir" ssh://"$myhost1//dir"
unison -fat -batch "$HOME/dir" ssh://"$myhost2//dir"

для обоих хостов я всегда получаю следующую ошибку для одного из них:

Неустранимая ошибка: внутренняя ошибка: архивы на диске не идентичны.

Это может произойти, когда обе машины имеют одинаковое имя хоста.

Если это не так, и вы получаете это сообщение несколько раз, пожалуйста: a) Отправьте отчет об ошибке на unison-users@yahoogroups.com (вам может потребоваться присоединиться к группе, прежде чем вам будет разрешено оставлять сообщения). б) Переместите архивные файлы на каждом компьютере в какой-либо другой каталог (в случае, если они могут быть полезны для отладки). Архивные файлы на этом компьютере находятся в каталоге /home/andreas/.unison и имеют имена вида arXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, где X - шестнадцатеричное число. c) Снова запустите unison для синхронизации с нуля.

Если я буду следовать инструкциям б), или если я бегу

unison -ignorearchives -fat "$HOME/dir" ssh://"$myhost1//dir" 

Я успешно синхронизирую это. Но тогда, когда вы нажмете другую, появится та же ошибка, что и выше. Кажется, что когда я синхронизирую одну из них, другая будет в несовместимом состоянии. Как я могу это исправить, кроме как всегда добавлять -ignorearchives? Unison версия 2.40.102 из пакетов Ubuntu и Android-приложения Unison.

1 ответ1

6

Оказывается, сообщение «фатальная ошибка» более уместно, чем я думал. Причина проблемы (которая возникнет при установке двух компьютеров, если хост меняет свое имя) состоит в том, что оба устройства Android для синхронизации с именами хоста были определены как localhost , даже если они различаются и определяются разными IP-адресами. -адресах.

Согласно руководству по унисону, имя хоста может быть задано вручную путем экспорта переменной среды UNISONLOCALHOSTNAME . Поскольку unison не создает оболочку входа в систему, ее нельзя экспортировать в файл .profile на устройствах синхронизации. Оказалось, что файл ./ssh/environment моих серверов ssh (в обоих случаях SshDroid) не читался. Наконец, имя хоста Android (которое может быть установлено с помощью setprop net.hostname [hostname]) также не читается унисонно. Вместо этого, кажется, по умолчанию для localhost .

Поэтому я пришел к следующему решению:

unison -servercmd "export UNISONLOCALHOSTNAME=host1; unison" ssh://"$myhost1//dir" "$HOME/dir" 
unison -servercmd "export UNISONLOCALHOSTNAME=host2; unison" ssh://"$myhost2//dir" "$HOME/dir" 

Здесь опция -servercmd определяет, какую команду запустить на удаленных устройствах, чтобы запустить унисон. В моей версии сначала экспортируется UNISONLOCALHOSTNAME в два разных значения.

Затем узлы распознаются как разные, и можно многократно синхронизировать несколько «подсказок» из центрального «концентратора» в «звездной» настройке.

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