Unison 与 Rsync + 挂载远程驱动器

Unison 与 Rsync + 挂载远程驱动器

所以我的情况是,我希望我的开发文件 - Ruby 和 PHP - 在我在家和外出时都可以在我所有的机器上使用。当我之前问这个问题时(在 Win7/8 中将我的 Web 服务器安装为驱动器) 我被告知要使用版本控制软件,但我不想下载本地副本并对其进行操作,这样我就必须上传新版本并将新版本重新下载到所有机器上。这里没有开发人员组,只有我一个人,我的大多数开发/调试问题都来自于编写代码并在一台机器上测试它,但忘记更新我的其他机器。因此,我希望在我所有的机器上都有一份同步的文件副本。

无论如何,我曾考虑在我的其中一台网络服务器上使用 ownCloud,因为还有其他原因,这样我的 Win 机器就可以轻松访问文件。我的 Win 机器有 ownCloud 更新客户端,其工作方式与 Google Drive 或 DropBox 类似,同步发生在一个计时器上。我的 Ubuntu 机器上的 ownCloud 更新客户端不想安装,我正在使用桌面版和服务器版的混合版本。所以我的 Ubuntu 机器只需通过 davfs2 安装 ownCloud 目录,并且(一旦我解决了这个问题)它们将在 cron 上使用 rsync 创建本地副本 - 这样,如果带有 ownCloud 文件的服务器出现故障,我的机器就可以继续工作。

但后来我偶然发现了我以前从未听说过的 Unison。看来 Unison 是一个旨在执行与差分 rsync 相同操作的程序。我误解了吗?

Unison 听起来像是专为跨服务器同步文件而构建的,因此我不必担心在执行差异 rsync 之前保持远程服务器的挂载正常运行或重新建立挂载。但是,我在 Unison 上找到的所有教程都建议你必须打开 SSH 以进行 root 登录。也许我什么都不担心,但这似乎是个坏主意。

问题:

  1. 我是否正确地认为,出于安全原因,允许 root 登录 SSH 不是一个好主意?
  2. Unison 有哪些优点是我忽略了的?
  3. 我是否忽略了 rsync 中的问题?例如,如果远程服务器挂载失败,我的本地副本将被清除,现在目录看起来是空的。
  4. Unison 相对于 rsync 或反之,在性能上是否有优势?
  5. 最后,有没有办法监控挂载点,并在挂载点挂载失败时自动重新建立?我可以使用 write something 来检查挂载点上的特定内容,但这似乎容易出现问题。

谢谢

答案1

如果您想要的是双向同步,请选择 Unison,它更适合这些场景;尽管也可以在 rsync 中实现。

  1. 这不是一个好主意,但不需要 root 登录。您需要登录到另一台有权写入要同步的文件夹的机器。由于这是您的个人资料,您可以使用您的正常登录名或在所有机器上专门为 Unison 创建特殊登录名,并授予该登录对这些文件夹的权限。

  2. 主要在于双向绑定和易于设置,但这取决于个人喜好。您可以尝试两者,看看最终更喜欢哪一个。

  3. 您可以在实际调用 rsync 或 Unison 同步之前执行检查。例如,您可以通过 sshfs 挂载远程计算机的目录。如果失败,请不要启动同步。这可以是同步脚本的一部分。

  4. 主要瓶颈是网络速度,如果您有大量数据需要同步(约 100GB 左右),Unison 的速度可能会更慢。否则,差异可以忽略不计,YMMV。每个人的设置都不同。您还应该阅读这个帖子作为您考虑的一部分。

  5. 如果你使用 sshfs,尝试重新连接选项。

话虽如此,如果这只是为了代码,那么考虑使用版本控制系统仍然是一个好主意,正如其他人所说的那样。您可以在家里的机器上托管 git 服务器,并且使用一个命令同步代码只需一分钟或更短的时间,而无需维护挂载、登录、连接等开销。

相关内容