在OSX和Ubuntu之间同步一个目录

我需要一个很好的方法来在我的OSX 10.6笔记本电脑和我的Ubuntu桌面之间同步一个目录。 Dropbox显然是一个很好的select,但是我需要同步的目录在两台机器上都由root拥有,修复这些权限会使我遇到的情况变得糟糕。 我正在考虑使用rsync编写我自己的脚本(这确实很有趣),但我想知道是否有更强大的东西在那里。 我听说过Unison,但是我不太了解。 这对我来说是一个不错的select,或者你能想出更好的东西吗? 谢谢!

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

  1. 联合如果你想要的东西,“正常”。 有一个很好的graphics用户界面,你可以很容易地在那里定义一个任务,并从命令行,一个脚本, cron ,不pipe。 我用它来同步我的笔记本电脑和我妻子的桌面上我们各自的用户目录。 真的很简单

  2. rsync如果你想控制(几乎)每一个方面。 有很多的参数可以让你尊重,修改或者更改权限,通过编号或者名字等来实现。事实上,很less需要一个完整的脚本。 通常你只需要找出(通过反复试验)最好的论证组合。

Unison是一个很好的解决scheme,如果您需要进行双向同步,并且希望能够手动解决冲突。 它logging了上次同步的内容,所以它知道文件是否已经在两端进行了更改。

如果你想要一个纯粹的后台解决scheme,自动发生(如从cron ),并有一个纯粹的单向同步, rsync可能会更好。 如果您正在进行单向同步,则Unison会保留全面的元数据(在~/.unison ),您不需要这些元数据。

无论您使用的是rsync还是Unison,两端都由root拥有的事实使事情变得相当复杂。 你需要在目的地上使用sudo来获得写权限,但是你不想以根用户身份进入源代码。 如果源代码全部可读,则可以通过在目标上运行sudo rsync并为源( user@host:... )提供显式的非root用户来完成此user@host:... 。 请注意,您可以使用公共密钥身份validation并设置authorized_keys文件,以便只有rsync可以与该密钥一起使用。

在一种情况下,我通过使用rsync守护进程导出整个目录来解决这个问题,从而允许匿名访问。 这显然限制了权限,但是我真正的需要是在接收端产生一组特定的所有权和许可,而不是保护源端。