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

425
hugomg

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

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

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

2

2 ответа на вопрос

1
Edward

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

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

Работает отлично :) Мне никогда не приходило в голову, что размещение символических ссылок внутри `.unison` будет работать! hugomg 8 лет назад 0
1
hugomg

The alternative I ended up with is to do a two-step synchronization. I have an unison profile for synchronizing my unison profile(s)

#.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 

Then, I use a script to run unison with each profile in turn

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

This solution is a bit cumbersome because I need to run unison 3 times instead of once but it has the advantage that none of the unison profiles are responsible for synchronizing themselves (which leads to the strange behaviour where you may need to run unison twice with the same profile to get things to work)