我需要一个好方法来同步我的 OSX 10.6 笔记本电脑和 Ubuntu 桌面之间的目录。Dropbox 显然是一个不错的选择,但是我需要同步的目录在两台机器上都归 root 所有,修复权限会搞砸我的情况。我原本考虑使用 rsync 编写自己的脚本(这确实很有趣),但我想知道是否有更强大的方法。我听说过 Unison,但对它了解不多。这对我来说是个好选择吗,或者你能想出更好的方法吗?谢谢!
答案1
两个简单的答案(和您已经提到的一样):
如果您想要“立即可用”的东西,Unison 就是您的不二之选。它拥有出色的 GUI,您可以轻松地在其中定义任务并从命令行、脚本
cron
等调用。我使用它来同步我和妻子的笔记本电脑以及桌面上各自的用户目录。它真的就是这么简单。rsync
如果您想控制(几乎)每个方面。有很多参数可以让您尊重、修改或破坏权限、按编号或按名称授予所有者等。事实上,很少需要完整的脚本;通常您只需(通过反复试验)找到最佳的参数组合。
答案2
一个非常好的跨平台(MacOS、Linux、Win 等,以及适用于 iOS、Android 的应用程序)开源系统,提供双向同步文件和目录的功能。同步事物- 它提供两台或多台计算机之间实时的连续文件同步。
答案3
如果您需要进行双向同步,并且希望能够手动解决冲突,Unison 是一个不错的解决方案。它会记录上次同步的内容,因此它知道文件是否在某个时间被更改两个都結束。
如果您想要一个纯后台解决方案,该解决方案会自动发生(例如来自cron
),并且具有纯单向同步,rsync
可能会更好。Unison 会在 中保留全面的元数据,~/.unison
如果您进行单向同步,则不需要这些元数据。
无论您使用的是 还是 Unison,两端都归 root 所有,这一事实使事情变得相当复杂。rsync
您需要sudo
在目标上使用 才能获得写入权限,但您不想ssh
以 root 身份进入源。假设源是所有人都可读的,您可以通过sudo rsync
在目标上运行并为源提供明确的非 root 用户 ( user@host:...
) 来做到这一点。请注意,您可以使用公钥身份验证并设置文件,authorized_keys
以便只能rsync
使用该密钥。
在一种情况下,我通过使用守护进程导出整个目录来解决这个问题rsync
,从而允许匿名访问。这显然会绕过权限,但我真正需要的是生成一组特定的所有权和权限,而不是保护源端。