Какой самый простой способ синхронизировать профиль Unison на компьютерах, которые не могут взаимодействовать напрямую?

Какой самый простой способ синхронизировать профиль Unison на компьютерах, которые не могут взаимодействовать напрямую?

Я использую Unison для синхронизации некоторых файлов между моим домашним компьютером и рабочим компьютером. Однако два компьютера не могут подключиться друг к другу напрямую через ssh, поэтому я синхронизирую через USB-флешку (отформатированную в ext4 для сохранения прав доступа).

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

Есть ли способ автоматически синхронизировать профиль синхронизации между двумя компьютерами?

решение1

Я храню профиль внутри каталога, который нужно синхронизировать. Внутри ~/.unisonя помещаю символическую ссылку на настоящий профиль. Это хорошо сработало для меня. Это также позволяет мне быстро «загрузить» новую машину: просто скопируйте профиль с USB-накопителя на новый компьютер и начните заново.

Есть один "подвох". Если вы добавитеигнорироватьстрока в профиле (на одном компьютере), которая соответствует файлу, который уже существует на USB-накопителе, этот файл будет передан с USB-накопителя на другой компьютер при следующей синхронизации Unison, несмотря наигнорироватьline. Причина в том, что профиль должен быть передан, но не вступает в силу (на другом компьютере) до тех пор, покаследующийсинхронизация. Кроме этого, я пока не столкнулся ни с какими проблемами.

решение2

Альтернатива, к которой я пришел, это двухэтапная синхронизация. У меня есть профиль унисона для синхронизации моего профиля(ей) унисона

#.unison/sneakernet-init.prof

label = Unison profiles

root = /home/hugo/.unison
root = /media/hugo/MYDRIVE/Sync/Unison

path = sneakernet-common        # ignore rules, diff command, etc
path = sneakernet-dotfiles.prf  # profile for my dotfiles
path = sneakernet-hugobox.prf   # profile for my other stuff

Затем я использую скрипт для запуска синхронно с каждым профилем по очереди.

#syncronize-things.sh
unison-gtk sneakernet-init
unison-gtk sneakernet-dotfiles
unison-gtk sneakernet-hugobox
sync # Flush file system caches

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

Связанный контент