STEP1
A1.1是新文件夹,A1.0是旧文件夹,out是放置 A1.0到A1.1的保持目录结构的增量文件。
1 | rsync --dry-run -rcnC --out-format="%n" A1.1/ A1.0/ |
注意该处的-C参数是按照cvs的ignore规则来过滤不需要同步的文件,在CVS中,默认是不会提交二进制文件的,所以如果需要进行二进制文件提取,那就不要加C.
执行了该命令后,得到了一个A1目录的文件列表:
1 | A1.1/system/app/ |
也就是差异文件,由于这里默认会显示出文件夹,所以要过滤掉以『/』结尾的文件夹的显示
1 | rsync --dry-run -rcnC --out-format="%n" A1.1/ A1.0/ |grep -v "/$" |
这样就得到了一个纯增量文件的列表
STEP2
有了文件列表,复制的操作方法就很多了。可以继续使用rsync同步到新的out目录,以防止多次执行后错误文件修复问题
完整代码
1 | rsync --dry-run -rcnC --out-format="%n" A1.1/ A1.0/ |grep -v "/$"|xargs -I{} rsync -R A1/./{} out/ |