获取 rsync 以生成补丁文件而不是跨文件复制?

Ama*_*rus 22 rsync patch diff

我正在使用 rsync 将大量已更改的文件从一台服务器复制到另一台服务器。我知道我可以使用该-n选项进行试运行,因此我可以查看哪些文件已更改。但是,是否可以让 rsync 打印更改的文件内容的差异?我想在复制之前先看看发生了什么?我可以保存到文件并稍后使用 diff(1) 应用的东西?

Kyl*_*ndt 8

可能有更好的方法,但这可能有效,尽管效率不高:

 rsync -vrn / dest:/ > ~/file_list
Run Code Online (Sandbox Code Playgroud)

然后编辑测试以删除统计信息,然后:

while read file; do
    diff $file <(ssh dest "cat $file")
done < ~/edited_file_list
Run Code Online (Sandbox Code Playgroud)

另一种选择:
您也可以考虑使用 sshfs/fuse 之类的东西挂载文件系统,然后只使用 diff。


小智 7

对于创建补丁:

rsync -arv --only-write-batch=patch new/ old/
Run Code Online (Sandbox Code Playgroud)

对于应用它:

rsync -arv --read-batch=patch dir/
Run Code Online (Sandbox Code Playgroud)

或使用自动生成的脚本:

./patch.sh
Run Code Online (Sandbox Code Playgroud)

资料来源: