![让 rsync 生成补丁文件而不是跨文件复制?](https://linux22.com/image/493021/%E8%AE%A9%20rsync%20%E7%94%9F%E6%88%90%E8%A1%A5%E4%B8%81%E6%96%87%E4%BB%B6%E8%80%8C%E4%B8%8D%E6%98%AF%E8%B7%A8%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%EF%BC%9F.png)
我正在使用 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 中获取某些东西?