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

bre*_*ics 6 rsync file-transfer

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

让我去我要去的地方..

显然这 input1

rsync -e ssh -varz ~/local/directory/ user@remote.login:~/remoteFolder/
Run Code Online (Sandbox Code Playgroud)

不一样 input2

rsync -e ssh -varz user@remote.login:~/remoteFolder/ ~/local/directory/
Run Code Online (Sandbox Code Playgroud)

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

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

有没有办法运行 rsync,无论是根据更新/修改的文件位置首先调用源位置还是目标位置,它都会真正同步文件和修改后的文件?

Dav*_*d Z 11

不,rsync只在一个方向同步文件。你可以把它作为一个聪明和更强大的版本cp(或者mv,如果你使用的--remove-source-files选项):智能在这个意义上,它试图跳过它已经存在于目标数据,并能够在这个意义上,它可以做的几件事情cp没有按't,例如删除在源已删除的目标文件。但在其核心,它实际上只是做同样的事情,从源复制到目标。

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