Answers:
也许有更好的方法,但这可能行得通,尽管效率不高:
rsync -vrn / dest:/ > ~/file_list
然后编辑测试以删除统计信息,然后:
while read file; do
diff $file <(ssh dest "cat $file")
done < ~/edited_file_list
另一个选择:
您可能还考虑使用sshfs / fuse之类的文件系统来挂载文件系统,然后仅使用diff。
rsync --diff
两年后找到一种新的/更好的方法……
对于创建补丁:
rsync -arv --only-write-batch=patch old/ new/
适用:
rsync -arv --read-diff=patch dir/
或使用自动生成的脚本:
./patch.sh
资料来源:
为了扩展凯尔(Kyle)的答案,这将使过程自动化。请注意,它完全未经测试,可能非常脆弱,可能会删除您的计算机并杀死您的狗。
#!/bin/bash
REMOTE=${1?Missing Remote Path}
LOCAL=${2?Missing Local Path}
# Trim trailing slash since we'll be adding it as a separator later
REMOTE=${REMOTE%/}
LOCAL=${LOCAL%/}
#Break it down
RHOST=${REMOTE%:*}
RPATH=${REMOTE#*:}
while read FILE; do
diff -u ${LOCAL}/${FILE} <(ssh $RHOST "cat ${RPATH}/${FILE}")
done < <(rsync -vrn $REMOTE/ $LOCAL/ | sed '1d;/^$/q')