在 OSX 和 Ubuntu 之间同步目录

在 OSX 和 Ubuntu 之间同步目录

我需要一个好方法来同步我的 OSX 10.6 笔记本电脑和 Ubuntu 桌面之间的目录。Dropbox 显然是一个不错的选择,但是我需要同步的目录在两台机器上都归 root 所有,修复权限会搞砸我的情况。我原本考虑使用 rsync 编写自己的脚本(这确实很有趣),但我想知道是否有更强大的方法。我听说过 Unison,但对它了解不多。这对我来说是个好选择吗,或者你能想出更好的方法吗?谢谢!

答案1

两个简单的答案(和您已经提到的一样):

  1. 如果您想要“立即可用”的东西,Unison 就是您的不二之选。它拥有出色的 GUI,您可以轻松地在其中定义任务并从命令行、脚本cron等调用。我使用它来同步我和妻子的笔记本电脑以及桌面上各自的用户目录。它真的就是这么简单。

  2. 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,从而允许匿名访问。这显然会绕过权限,但我真正需要的是生成一组特定的所有权和权限,而不是保护源端。

相关内容