我正在使用多台Linux笔记本电脑/台式机,并希望它们"共享"主目录.
遗憾的是,NFS不是一种选择.因此我试图使用rsync创建一个bash脚本,但我无法弄清楚如何做到这一点.
这是我现在的例子
`#`!/bin/bash sync() { rsync -azvR --exclude-from=/home/ME/.rsync_excludes --delete -e 'ssh -ax' $1 $2 } sync /home/ME server.domain:/home/ME `#`sync server.domain:/home/ME /home/ME
我认为如果我只使用一台更新服务器文件的客户端机器,这将会很有用.正确?
如果我在一个客户端删除文件怎么办?想要在另一个客户端上删除该文件(在同步原因之后)?
我可以为此目的使用rsync吗?我应该寻找其他计划吗?希望不是......
编辑:由于这个解决方案不应该只对我来说,如果解决方案是自动的,我将不胜感激.
编辑2:也许必须有一个包括回购的解决方案.Subversion,Git,Mercurial或其他.
rsync
保持一个位置与主站同步是很好的.或者换句话说,镜像A到B.但这不是你正在做的事情.你需要rsync
A到B和B到A.这带来了一系列全新的问题.如果文件消失,您是否需要在另一侧删除或rsync回来?也许它在另一边被修改了; 你不能检查.
无论如何; 这个问题的解决方案是以统一的形式出现的.这是一个工具(适用于Linux,OS X,Windows,BSD,...)(具有CLI工具,GUI工具,并且可以很好地安排cron
),这将使您的主目录或任何其他目录很好地保持同步,并且能够处理几乎任何类型的冲突或问题.那些人认为这比我们在这里做得更好.
或者,有SCM.许多人使用SCM来管理他们的主目录.Subversion很受欢迎,但我根本不推荐它.它不仅会占用大量空间,还会使所有内容变得非常缓慢,并根据与主存储库的活动连接强制保持同步.还有像GIT这样的替代品,但它们都有其缺点.
无论哪种方式,任何基于SCM的解决方案都违反了SCM的一个非常重要的规则:您永远不应该在那里保留大的二进制数据.SCM不是为此而制造的.您不会在SCM中保留您的照片集,电影,文档,下载和类似内容,即使您可能希望保持它们同步或保留它们的历史记录(特别是对于图片/文档).
重要的是要了解保持备份和保持同步之间存在差异.您的备份应保存在远程/分离位置,并且可以包含您拥有的所有内容的历史记录.我个人推荐rdiff-backup.它保存了所有内容的历史,使用rsync
引擎下的算法来最小化流量并访问备份位置看起来像备份的最新状态:您可以像浏览普通文件一样浏览它.
总而言之,我建议您将unison和rdiff-backup结合使用,以实现全面的解决方案,确保您的数据安全可靠地保持同步.