Я использую 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 дважды с одним и тем же профилем, чтобы все заработало).