数据库迁移需要在数据传输时做MD5验证,下面记录了提前进行测试的过程。
一、首先查看AIX的版本,为5.3:
# oslevel 5.3.0.0
该台AIX为已不再使用的机器,没找到合适的测试文件,需要dd命令生成一个test.dmp文件用来测试:
# df -m Filesystem MB blocks Free %Used Iused %Iused Mounted on /dev/hd4 10240.00 3942.29 62% 8927 1% / /dev/hd2 2304.00 562.10 76% 36037 22% /usr /dev/hd9var 64.00 52.94 18% 392 3% /var /dev/hd3 512.00 510.85 1% 116 1% /tmp /dev/hd1 64.00 24.67 62% 25 1% /home /proc - - - - - /proc /dev/hd10opt 12800.00 5188.66 60% 38948 4% /opt /dev/ftp_lv 3200.00 590.58 82% 4662 4% /ftproot # pwd / # dd if=/dev/hd2 of=/test.dmp ibs=1M count=3000 2304+0 records in. 4718592+0 records out. # ls -l |grep test -rw-r--r-- 1 root system 2415919104 Apr 15 21:18 test.dmp #
生成的文件大小为2415919104/1024/1024 = 2300MB。AIX自带的命令csum可以计算MD5,但是无法处理大于2GB的文件,处理大文件时可以手动编辑一个perl脚本md5sum.pl。
1 #!/usr/bin/perl 2 3 use Digest::MD5; 4 use IO::File; 5 6 my $chk = Digest::MD5->new(); 7 foreach my $file (@ARGV) 8 { 9 $chk->addfile(IO::File->new($file)); 10 print "$file->",$chk->hexdigest,"\n"; 11 } 12 ~
下面测试此命令对于一个普通小文件的MD5计算,可以看到两者结果时一样的:
# csum -h MD5 smit.log 6177d1a15805d2ac45723ad7a490c898 smit.log # ./md5sum.pl smit.log smit.log->6177d1a15805d2ac45723ad7a490c898 #
再测试两者对于刚生成的文件的MD5的计算:
# csum -h MD5 test.dmp csum: 1493-010 Unable to open test.dmp. csum: 1493-001 Unable to access one or more specified files. # ./md5sum.pl test.dmp test.dmp->e40fc9e573519f685f5939d297f5afdf #
经过自己计时,共花费了48s,平均速度为48MB/s。
二、查看Solaris版本,为Solaris 10:
$ uname -a SunOS t-ora 5.10 Generic_111111-11 sun4v sparc sun4v ---处理过了:)
经过查询资料,在10中md5sum已经在光盘中了,但是本机没有安装,需要使用digest 命令,该机上有合适的文件用于测试就不需要进行创建了:
$ md5sum md5sum: not found $ ls -l |grep eis -rw-r--r-- 1 root root 6946582528 Dec 28 10:05 eis-dvd3.4.4-1.iso $ digest -a md5 -v eis-dvd3.4.4-1.iso md5 (eis-dvd3.4.4-1.iso) = 8ca90a7d389b69a41148fc2dcf5ec5b9
经过自己计时,共花费了138s,文件大小为 6946582528/1024/1024 =6624MB 平均速度为48MB/s。