我家里有三台电脑,我想让/home/
三台电脑之间的文件夹树同步。
三台电脑中一台电脑上修改/添加/删除的任何文件/文件夹(隐藏文件除外)都会在另外两台电脑上更新。
是rsync
足以做到这一点吗?如何做到?
答案1
下面列出了一些可能解决这个问题的方法,每种方法都需要你做出不同的权衡,所以你必须自己做出选择,亲自尝试:
齐奏- 正如其他人提到的,这是手动运行的,但非常快速、可靠和有效。需要两台机器同时同步。它有一个漂亮的用户界面,允许您处理几乎不可避免的冲突,并正确跟踪和传播删除。图形应用程序/包称为 unison-gtk。
OwnCloud- 在您自己的服务器上运行云存储。您需要一台机器来运行。需要进行合理的设置。在服务器上运行完整的 Apache 2 网络服务器和 SqlLite 或 MySQL 数据库。与使用桌面客户端的 Dropbox 类似,但服务器由您控制。编辑:OwnCloud 最近在项目运行方式上进行了一些更改,现在有了一个新的完全开源版本(即没有闭源“企业”版),名为NextCloud,(见此YouTube 采访与原始 OwnCloud 开发人员联系以了解更多详细信息)。
SparkleShare- 使用 git 保持文件同步。根据主页:适合存储许多较小的文件,不适合存储大量大文件(例如音乐或照片集)。
海底文件- 提供可安装在本地机器上的服务器组件。Seafile 使用数据模型类似于 git用于跟踪更改。为台式机、平板电脑和智能手机提供同步客户端。您可以在以下位置找到描述设置的博客文章http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/
同步- “... 用 bash 编写并基于 rsync 的双向文件同步工具。它通过 ssh 隧道在本地和/或远程目录上运行。它主要旨在作为 cron 任务启动”(来自网站的文字)
强力文件夹- 基于 java 的 GPL v2 项目。主网站推广商业产品,因此不清楚如何使用提供的 .jar 文件。
Rsync- 快速有效,已经存在了几十年,但它不保留历史记录,因此您必须选择一个方向来判断文件是新的还是已删除的。图形工具如下同步Rsync。
同步- 监控文件夹/文件以触发 rsync 复制
dvcs-自动同步- 用 python 编写,使用 git 在机器之间存储和共享更改,并使用 XMPP 传达更改。
git 附件- 基于 git 的用于分流文件的命令行工具。这里有一个说明性的演示:http://git-annex.branchable.com/walkthrough/
托尼多- 免费软件。提供可与其他设备共享文件的桌面应用程序。还提供商业云产品和 TonidoPlug 插头计算机。
BitTorrent 同步(免费软件)- 基于 BitTorrent 的点对点文件同步。我对此了解不多,因为它不是开源的,我不会使用它,也不相信它会将我的数据保存在我的 LAN 中,欢迎随意编辑此答案,提供更好的信息/真实经验。
同步事物- 作为 BitTorrent Sync 的开源替代品而开发。目前它缺少 BitTorrent Sync 的一些高级功能,例如不受信任的对等端。它正在积极开发中。
商业托管服务,例如 dropbox、ubuntu one、google drive、apple iCloud 都既快捷、便宜又方便,但是它们都需要将您的所有数据信任给一家公司,并且需要相当快的互联网连接。
Git/颠覆- 直接使用源代码控制系统。完全手动,可能有点复杂,但这种方法很受欢迎,因为有些用户熟悉这些系统,并将它们用作编程工具。
云文件系统- 同步整个文件系统,基于集群技术
NFS 安装 - 基本上,您的家就在一台机器上,您可以通过网络访问它,这对您随身携带的笔记本电脑来说并不好。更多信息:http://www.linuxjournal.com/article/4880
做出决定时要考虑的因素:
中央服务器 - 某些解决方案要求一台机器始终处于开启状态(或至少在您需要同步时),以便其他机器与之同步。这可能是您现有的机器之一,也可能是单独的机器(例如 NAS)。注意增加电费。
自动 / 手动 / 计划 - 避免在多台机器上发生更改时解决冲突的最佳方法是在每台机器上安装一个程序来监视更改并立即同步,这样可以减少最终出现多个版本的机会。使用手动流程时,您始终必须记住运行同步。
远程访问 - 您是否想在局域网(即家里)之外进行同步,请考虑这样做的安全隐患。
安全性 - 您的数据是否以加密方式离开网络,机器之间的传输有多安全。如果有人在移动中捕获您的数据,后来发现加密有漏洞怎么办?谁控制保存数据的服务器,数据是否加密,您可以信任任何第三方吗?您是否必须在路由器上打洞才能进行远程访问。“已删除”文件和相关元数据在同步设备和中央服务器上会保留多长时间。您是否在加密和未加密存储之间进行同步?
移动大文件夹 - 我尝试过的所有解决方案都存在一个问题,即当您移动/重命名文件或文件夹时,同步无法理解这一点,并将其作为新文件重新上传,然后删除旧副本。
磁盘容量
备份 - 同步不是备份。误删除重要文件,上述许多操作会删除您所有其他副本。我建议阅读Mat Honan 关于遭受黑客攻击的文章可以很好地解释一下,如果你把所有的数字鸡蛋都放在一个数字篮子里,会发生什么。
我建议不要同步整个主文件夹,而是选择要同步的特定文件夹,例如等Documents/
。Pictures/
这样可以避免被迫处理自动同步所有内容的速度/性能/磁盘空间问题。它还可以避免必须维护排除列表。
当我继续尝试寻找适合我个人的方法时,我会尝试为这个答案提供最新的有用信息。我已将所有其他答案中的信息汇总为一个完整的答案。
参考:
- LinuxFormat - 2014 年 2 月 LXF180 p31,“托管存储综述”
黑客/全部/
答案2
齐奏可能是个不错的选择:
Unison 是适用于 Unix 和 Windows 的文件同步工具。它允许将文件和目录集合的两个副本存储在不同的主机上(或同一主机上的不同磁盘上),分别进行修改,然后通过将每个副本中的更改传播到另一个副本来更新它们。
它已经实现了双向同步。请参阅下面的更新。
我了解到 rsync 不能做的事情很少,而且它可能提供相同或更好的解决方案,但您必须等待 rsync 专家出现以提供该解决方案。
更新:是的,Unison 可以同步 2 台以上的机器。从他们的用户手册:
使用 Unison 同步两台以上的机器
Unison 专为同步副本对而设计。但是,也可以使用它通过执行多个成对同步来使更大的机器组保持同步。如果您需要这样做,最可靠的设置方法是将机器组织成“星型拓扑”,其中一台机器指定为“中心”,其余机器指定为“辐条”,并且每台辐条机器仅与中心同步。星型拓扑的一大优势是它消除了混淆“虚假冲突”的可能性,因为 Unison 为其同步的每对主机维护一个单独的档案。
答案3
如何将您的文件放入 SubVersion 或 git 之类的版本控制系统中?
我没有对整个主目录进行版本控制,而是只对包含一些重要内容的少数子目录进行版本控制。但我正在考虑转换为 git,因为它似乎更适合这种类型的工作。(快速搜索将为你指明正确的方向)。
祝你好运
更新:git 的一个好处是,您可以轻松获得特定于计算机的文件,因为您只需要为该计算机创建一个分支(在 git 中,默认情况下您会获得该分支)。因此,您不需要在所有计算机上拥有完全相同的文件,它们只需要相似,并且有一个公共的“主”分支,其中包含您想要在所有不同计算机上使用的内容。
答案4
我认为你可以通过 NFS 安装一个公共主文件夹来更好地实现你想要的效果。查看这篇文章http://www.linuxjournal.com/article/4880