让 rsync 生成补丁文件而不是跨文件复制?

让 rsync 生成补丁文件而不是跨文件复制?

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

答案1

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

 rsync -vrn / dest:/ > ~/file_list

然后编辑测试以删除统计数据,然后:

while read file; do
    diff $file <(ssh dest "cat $file")
done < ~/edited_file_list

另外一个选择:
您可能还考虑使用 sshfs/fuse 之类的程序挂载文件系统,然后使用 diff。

答案2

创建补丁:

rsync -arv --only-write-batch=patch new/ old/

应用方法:

rsync -arv --read-batch=patch dir/

或使用自动生成的脚本:

./patch.sh

资料来源:

答案3

rsync 本身无法做到这一点,但如果有可能使用齐奏您可以从中生成不同的样式格式。

答案4

为什么不直接使用 diff(用于文本文件)或 xdelta(用于二进制文件)之类的东西来生成差异?为什么需要专门从 rsync 中获取某些东西?

相关内容