linux 文件差分,Linux文件夹对比并提取的差分文件技巧-rsync的妙用

本文介绍了如何使用rsync命令来对比并提取Linux文件夹的差分文件。通过--dry-run选项演示同步过程,结合--out-format参数列出差异文件,再利用grep过滤掉文件夹,最后使用xargs和rsync复制增量文件到目标目录,实现高效增量更新。
摘要由CSDN通过智能技术生成

需求

最近团队正在开发一个版本对比工具,要求是把A1文件夹与A2对比,将A2中的增量部分,输出到update文件夹中,生成增量升级包/差分包。

方案研究

实现该功能的第一反应是,分别遍历2个文件夹,进行单个文件对比是否存在于MD5比对,并输出结果,但是这个绝对是最低级做法,并且时间复杂度为O(n²),基本上就是直接否定。

后来深入研究了内核补丁常用的diff + patch方案,即

diff -urNa dir1 dir2

生成了差异文件后,用patch命令进行文件的复制或者文件内容修改。这个很明显如果要实现需求还是要去人工代码解析diff的结果才行。也是复杂了。

突然。。或者是说类似动画片里面柯南那句masaka 搭配场景闪现的效果出现了...

能分析出文件夹差异,还能支持多种对比模式checksum、mod-time、size的,还能过滤掉svn不需要提交的二进制文件、中间文件,经常用于服务器端增量同步的,不就是rsync么。。。(该处rsync应该字号放大十倍,但是markdown改不了)

现在唯一要解决的问题是,rsync是从A文件夹同步到B文件夹,是否可以重定向这个同步的文件到C文件夹而不改变B文件夹内容呢?

翻看了rsync man之后oh ~ 这个--dry-run参数是演示trial的意思。。也就是说使用了dry-run就只能看,不会变了。。。

马上开始coding。。。

STEP1

A1.1是新文件夹,A1.0是旧文件夹,out是放置 A1.0到A1.1的保持目录结构的增量文件。

rsync --dry-ru

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值