【linux】使用rsync命令将两个文件夹下的所有文件进行差分
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【linux】使用rsync命令将两个文件夹下的所有文件进行差分,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1764字,纯文字阅读大概需要3分钟。
内容图文
其实这是一个理解错需求后的产物....
首先这里的差分表示:对比两个文件夹下的所有文件,文件内容有差异的所有文件提取出来,保持其目录结构存放到新的目标目录中。
这里的有差异是对文件内容进行对比,文件时间戳不同但是文件内容一样时视为无差异。
参考文章:https://my.oschina.net/mengshuai/blog/551379
rsync --dry-run -rcn --out-format="%n" $base_path/new/$new_name/ $base_path/old/$old_name/ |grep -v "/$"|xargs -I{} rsync -R -a ./{} $base_path/out/$ba_name
1、--dry-run:只进行演示;
2、-rcn:
3、$base_path/new/$new_name/ 新文件夹路径 $base_path/old/$old_name/ 旧文件夹路径
4、|grep -v "/$":过滤 “/”结尾的文件夹显示
5、|xargs -I{}: 将两条命令拼为一条,因为要把前面一条输出的文件列表{}给后面一条作为参数
6、第二条命令:从./{}拷到$base_path/out/$ba_name
7、-a:递归并且保持目录结构和文件属性权限地进行拷贝
以下代码是将两个文件夹互相进行差分,以及一个最新版本的全量包。
# ! /bin/sh set -e base_path=$(cd $(dirname $0);pwd) echo "path:"$base_path new_path=$(cd ./new/*;pwd) new_name=${new_path##*/} echo "new_name:"$new_name old_path=$(cd ./old/*;pwd) old_name=${old_path##*/} echo "old_name:"$old_name ab_name="$old_name-$new_name" echo "ab_name:"$ab_name ba_name="$new_name-$old_name" echo "ba_name:"$ba_name full_name="$new_name-FULLDIFF" echo "full_name:"$full_name rm -r $base_path/out/* echo "remove out file..." mkdir $base_path/out/$ab_name cd $base_path/new/$new_name rsync --dry-run -rcn --out-format="%n"$base_path/old/$old_name/ $base_path/new/$new_name/ |grep -v "/$"|xargs -I{} rsync -R -a ./{} $base_path/out/$ab_name echo "A-B file complete!" mkdir $base_path/out/$ba_name cd $base_path/old/$old_name rsync --dry-run -rcn --out-format="%n"$base_path/new/$new_name/ $base_path/old/$old_name/ |grep -v "/$"|xargs -I{} rsync -R -a ./{} $base_path/out/$ba_name echo "B-A file complete!" mkdir $base_path/out/$full_name cd $base_path/new/$new_name rsync -R -ra * $base_path/out/$full_name echo "B-FULL file complete!" echo "finish."
原文:https://www.cnblogs.com/jiangyu0331/p/14336138.html
内容总结
以上是互联网集市为您收集整理的【linux】使用rsync命令将两个文件夹下的所有文件进行差分全部内容,希望文章能够帮你解决【linux】使用rsync命令将两个文件夹下的所有文件进行差分所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。