用md5,同步目录结构

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

用md5,同步目录结构

#1

帖子 eexpress » 2011-07-20 11:42

A机器A目录 大量修改了目录名和文件名
准备到B机器B目录,同步结构
文件类型其实并不适合使用版本控制。
准备做一个脚本,用md5判断,搬移目录和文件。

举例

代码: 全选

● md5sum bin/*.pl|head |perl -e 'use Data::Dumper; %h=map{split /\ \ /} <>; print Dumper \%h;'
$VAR1 = {
          'b247e006be6dcedc3ca5511674f2e47a' => 'bin/monitor-clip.pl
',
          '28376d6f0811f3b8ee848c807bb9969a' => 'bin/flash-down.pl
',
          '8ceefc57ce9ac470bb1dec5cdaaf6ce2' => 'bin/mailto-attach.pl
',
          'ea7d5d54782cc743efb467796519b444' => 'bin/show_png.pl
',
          '00c0c8224b81e3e890fc0052f41b7b95' => 'bin/cflow2dot.pl
',
          '28c1dfb1f8119d3ab50f78130f1b402b' => 'bin/grepmulticolor.pl
',
          '776d480d01dd5fa53407f3566e147047' => 'bin/clip.pl
',
          '7269ed0cd3f921d6735bfb0c4d413747' => 'bin/down-lrc.pl
',
          '69293b7d6c8655c2127018ebd29d44c6' => 'bin/ip-t-翻译.pl
',
          'ee00b65887fc33b597e85b7057f04c96' => 'bin/attach.pl
'
        };
回家写。
● 鸣学
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 用md5,同步目录结构

#2

帖子 fanhe » 2011-07-20 14:12

md5 碰撞了怎么办
头像
lm789632
帖子: 389
注册时间: 2011-01-16 22:50
系统: UBUNTU 12.10
来自: HELL

Re: 用md5,同步目录结构

#3

帖子 lm789632 » 2011-07-20 14:33

fanhe 写了:md5 碰撞了怎么办
md5碰撞?很常见吗? :em06
头像
qy117121
论坛版主
帖子: 50587
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 用md5,同步目录结构

#4

帖子 qy117121 » 2011-07-20 14:35

lm789632 写了:
fanhe 写了:md5 碰撞了怎么办
md5碰撞?很常见吗? :em06
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

邮箱 [email protected]
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 用md5,同步目录结构

#5

帖子 eexpress » 2011-07-20 14:39

我等他碰撞,然后再来报告。
:em04
● 鸣学
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: 用md5,同步目录结构

#6

帖子 sk1418 » 2011-07-20 16:35

我没明白这是要实现什么功能呢?
B机器的B目录最终要和A机器的A目录内容一样?那你copy过去不就得了?
还是我哪理解错了?
---
regards,

Kent
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 用md5,同步目录结构

#7

帖子 eexpress » 2011-07-20 20:59

代码: 全选

#!/usr/bin/perl

use feature 'say';
open LOCAL,"md5-locate"; open REMOTE,"md5-remote";
%l=map{split /\ \ /} <LOCAL>; %r=map{split /\ \ /} <REMOTE>;
for (keys %r){
chomp $l{$_}; chomp $r{$_};
say "====\t$_\n$l{$_}\t->\t$r{$_}" if $l{$_};
}
close LOCAL; close REMOTE;
nnnd 居然只有2成内容可操作的。看来增加蛮多文件了。

sk1418, 大目录,cp你不觉得麻烦嘛。一台机器整理好了,另外一台同步修改下而已。原本2目录是差不多内容的,不需要拷贝。
● 鸣学
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 用md5,同步目录结构

#8

帖子 ChenFengyuan » 2011-07-20 23:30

到底神要shell实现还是perl :em06
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 用md5,同步目录结构

#9

帖子 ChenFengyuan » 2011-07-20 23:32

两边find + sha512sum
然后比较不同的,从A中提取文件(保持目录结构)
然后复制过去.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 用md5,同步目录结构

#10

帖子 eexpress » 2011-07-21 9:18

那句看出是shell?做md5的?看7楼的嘛。实际比较的,多简单。

就你天天sha512sum

我输入md5<tab>习惯了。

:em04
● 鸣学
头像
lexdene
帖子: 434
注册时间: 2010-02-21 16:19
来自: 大连
联系:

Re: 用md5,同步目录结构

#11

帖子 lexdene » 2011-07-22 9:08

围观各路大牛。
回复