与 Unison 进行单向同步/备份

与 Unison 进行单向同步/备份

我正在使用同步工具 Unison 将我的音乐从 Mac OSX 和 Ubuntu 9.10 机器备份到 Ubuntu。问题是,我想让我的 Mac 作为源,Ubuntu 作为目标,这样 Ubuntu 机器将始终是 Mac 上 Music 文件夹的精确副本,但如果我从 Ubuntu 中删除某些内容,Mac 上的内容也不会被删除。我查看了文档,但目前我有点不明白。

答案1

更适合这项工作的工具可能是 rsync(您需要在两台计算机上都安装它)。我使用它来使我的笔记本电脑音乐文件夹与家庭文件服务器保持同步,这与您的情况非常相似。rsync 专门用于使镜像副本保持最新。

像这样的命令行可能会有用(假设您从 Ubuntu 运行它):

rsync -a --delete-before myMacMachineName:/MyMusic/ /mymusic/

如果您想从 Mac 运行它并推送到 Ubuntu 计算机而不是拉取,那么切换上述行非常容易。

答案2

使用unison -force

手动的:

包括首选项 -force root会导致 Unison 解决所有差异(甚至是非冲突更改)以有利于 root。这实际上将 Unison 从同步器变为镜像实用程序。您还可以指定-force newer(或 -force older)以强制 Unison 选择具有较晚(较早)修改时间的文件。在这种情况下, -times还必须启用首选项。此首选项被首forcepartial选项覆盖。只有当您确定自己知道自己在做什么时才应使用此首选项!

例如(使用套接字模式)。在您想要成为其他镜像的目录中启动 unison 侦听器。在 unison 客户端调用中定位该套接字。强制导致所有更改都是从给定根开始的单向更改。

cd /target/mirror/directory
unison -socket 123456 &

在其他地方或在同一主机上:

unison -silent -force /home/test/thing2 /home/test/thing2 socket://somehost:123456/

答案3

虽然 TheToasterThatCould 的答案可以“工作”,但请注意,它无法正确备份 Mac 文件系统“资源分叉”

虽然 Mac OSX 版本的 rsync 可以识别资源分叉,但 Linux 版本的 rsync 却不能(而且可能永远不会,因为 Apple 版本的 rsync 是 OSX 专用的,不会以非 OSX 版本的 rsync 可以处理的方式将这些资源分叉呈现给另一端的 rsync)。其结果是 Mac 和 Linux 机器之间不会进行资源分叉 rsync。

某些 Mac 应用程序利用资源分支来存储与特定文件相关的数据。如果您确定要同步的文件不需要或使用资源分支,那么使用 rsync 应该没问题。

如果您想同步资源分支,那么 unison 将是更好的方法,因为(根据 unison 文档)它可以同步资源分支。

答案4

目前,unison /home/test/thing2 /home/test/thing2 socket://somehost:123456/ -silent -batch将工作,其中-batch表示没有任何问题

相关内容