免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: pu57
打印 上一主题 下一主题

diff2个文件夹的差异比较问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-06-10 14:46 |只看该作者
这个应该可以了…… >_<

Usage: ./diff.sh old new logfile


  1. #!/bin/sh

  2. [ $# -lt 3 ] && echo "ERROR : TWO directories & ONE logfile path is requested ." && exit 1
  3. ([ ! -d $1 ] || [ ! -d $2 ]) && echo "Directory must be existed ." && exit 2
  4. mkdir -p share update del || (echo "Destination Directory can NOT be created ." && exit 3)

  5. find $1 $2 -type f | cut -d/ -f2- | sort -u | while read line;
  6. do
  7.         [ -f $1/$line ] && from=$1 || from=$2
  8.         ([ -f $1/$line ] && [ -f $2/$line ] && [ "$(md5sum < new/$line)" = "$(md5sum < old/$line)" ]) && to="share" || to="update"
  9.         [ -f $1/$line ] && [ ! -f $2/$line ] && to="update"
  10.         [ ! -f $1/$line ] && to="del"

  11.         mkdir -p $to/$(dirname $line) && cp $from/$line $to/$line && echo $(date +%F)" $from/$line >> $to/$line" >> $3
  12. done

  13. echo "Done !" && exit 0
复制代码

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
32 [报告]
发表于 2009-06-10 14:52 |只看该作者
日志文件log可能要根据自己的要求来修改:
  1. mkdir del share update
  2. rsync -av -n -v --del old/ new/|sed '1,3d;/^total/,$d'|tee log| sed '/^deleting \(.*\)/s//cd new;cp --parents \1 ..\/del;cd ../e;t;/\(.*\) is uptodate$/s//cd old;cp --parents \1 ..\/share;cd ../e;t;s/.*/cd old;cp --parents & ..\/update;cd ../e' >&/dev/null
复制代码

[ 本帖最后由 blackold 于 2009-6-10 15:39 编辑 ]

论坛徽章:
0
33 [报告]
发表于 2009-06-10 15:06 |只看该作者
原帖由 kwokcn 于 2009-6-10 14:46 发表
这个应该可以了…… >_<

Usage: ./diff.sh old new logfile


#!/bin/sh

[ $# -lt 3 ] && echo "ERROR : TWO directories & ONE logfile path is requested ." && exit 1
([ ! -d $1 ] || [ ! -d $2  ...

其他都没有问题了
不过这里有个小问题.
2009-06-10 old/F/world >> del/F/world
这个问题在logfile里看的到,我删除了old目录下的F目录下的world文件,但我在del下看不见F目录
2009-06-10 old/F/haha >> update/F/haha
这里我增加了一个haha文件,都是可以在update下的F目录下找到
请问是哪里出了点问题

论坛徽章:
0
34 [报告]
发表于 2009-06-10 15:08 |只看该作者
原帖由 blackold 于 2009-6-10 14:52 发表
日志文件log可能要根据自己的要求来修改:
mkdir del share update
rsync -av -n -v --del old/ new/|sed '1,3d;/^total/,$d'|tee log|sed '/^deleting \(.*\)/s//cp -i new\/\1 del/e;t;/\(.*\) is uptodate$ ...

这个也可以这么写啊

论坛徽章:
0
35 [报告]
发表于 2009-06-10 15:32 |只看该作者
好的,如果还有什么问题,我再提问,谢谢2位老师的帮助。

论坛徽章:
0
36 [报告]
发表于 2013-08-14 14:08 |只看该作者
rsync可以实现你的需求!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP