rsync 真的是双向的还是单向的?

rsync 真的是双向的还是单向的?

所以我知道 rsync 通过使用校验和算法来工作,该算法根据文件大小和日期更新文件。但是这种同步不是取决于源和目标的调用方式吗?源到目标的顺序不会改变同步内容的行为吗?

让我到达我要去的地方..

显然这个input1

rsync -e ssh -varz ~/local/directory/ [email protected]:~/remoteFolder/

不等于input2

rsync -e ssh -varz [email protected]:~/remoteFolder/ ~/local/directory/

但我认为无论以哪种方式调用 rsync,其全部意义在于,任何较新的文件都会在本地和远程目标之间更新。

但是,这似乎取决于您的新文件是否位于源位置而不是目标位置下。如果我更新了文件1在我的本地机器上(相同,但较旧文件1在服务器上),保存它,然后用于code2在位置之间同步,我注意到新版本文件1在我的本地计算机上无法上传到服务器。它实际上用旧版本覆盖了更新的文件。如果我使用input2它,会将修改后的内容上传到服务器。

有没有一种方法可以运行 rsync 来实现字面上的同步新的和修改的文件,无论源位置还是目标位置都会根据较新/修改的文件位置首先调用?

答案1

不,rsync仅沿一个方向同步文件。将其视为智能且功能更强大的版本cp(或者mv如果您使用该--remove-source-files选项):智能是指它尝试跳过目的地已存在的数据,而功能是指它可以做一些cp不做的事情't,例如删除在源处已删除的目标处的文件。但从本质上讲,它实际上只是做同样的事情,从源复制到目的地。

作为帕特里克在评论中提到,一致将做您正在寻找的事情,并在两个方向上更新。不过,它不是标准工具 - 许多类 UNIX 系统都会rsync安装,但通常不会安装unison。但在 Linux 发行版上,您可能可以在包管理器中找到它。

答案2

为了最简单的情况一个人可能效率低下

$ rsync -au AB; rsync-au BA

将最新的文件复制到双方。所以这是可能的。但不推荐。

相关内容