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