我使用 Unison 在我家用电脑和工作电脑之间同步一些文件。但是,这两台电脑无法通过 ssh 直接连接,因此我通过 USB 拇指驱动器(使用 ext4 格式化以保留权限)进行同步。
我遇到的问题是 Unison 将同步配置文件配置存储在本地(在 .unison 目录中),而不是存储在文件夹本身中。这意味着某些信息(例如忽略的文件)需要在我保留的两个配置文件中重复。
有没有办法让同步配置文件在两台计算机之间自动同步?
答案1
我将配置文件保存在要同步的目录中。在里面~/.unison
,我放置了一个指向真实配置文件的符号链接。这对我来说很有效。它还允许我快速“引导”一台新机器:只需将配置文件从 USB 驱动器复制到新计算机,然后重新开始。
有一个“陷阱”。如果你添加一个忽略行到配置文件(在一台计算机上),该配置文件与 USB 驱动器上已经存在的文件相匹配,该文件将在下一次 Unison 同步时从 USB 驱动器传输到另一台计算机,尽管忽略行。原因是配置文件计划被传输,但直到下一个同步。除此之外,我还没有遇到任何问题。
答案2
我最终选择的替代方案是进行两步同步。我有一个用于同步我的 unison 配置文件的 unison 配置文件
#.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 两次才能使其正常工作)