Linux 下,不同服务器之前的数据copy是很常见的操作。 常见的copy命令有scp 和cp。 但是对于一些重要的文件,如数据库的备份文件,在copy之后,我们还需要对copy之后的文件进行一下效验, 以免在copy过程中的丢失。 造成无法恢复数据。
常见的效验有如下2种方式:
1. 比较文件大小
用ll或者ls 命令分别查看一下copy之前和copy之后的文件大小。
[root@singledb backup]# ll
total 639820
-rw-r----- 1 oracle oinstall 18150400 Dec 7 19:50 arch_0hluu1q6_1_1_20101207
-rw-r----- 1 oracle oinstall 9810432 Dec 7 19:50 arch_0iluu1q7_1_1_20101207
-rw-r----- 1 oracle oinstall 32256 Dec 7 19:50 arch_0jluu1qu_1_1_20101207
-rw-r----- 1 oracle oinstall 15335424 Dec 7 19:50 ctl_file_0kluu1sf_1_1_20101207
-rw-r----- 1 oracle oinstall 371933184 Dec 7 19:54 orcl_0eluu1aa_1_1_20101207
-rw-r----- 1 oracle oinstall 223895552 Dec 7 19:56 orcl_0fluu1ac_1_1_20101207
-rw-r----- 1 oracle oinstall 15335424 Dec 7 19:56 orcl_0gluu1ks_1_1_20101207
[root@singledb backup]# ls -lrt
total 639820
-rw-r----- 1 oracle oinstall 18150400 Dec 7 19:50 arch_0hluu1q6_1_1_20101207
-rw-r----- 1 oracle oinstall 32256 Dec 7 19:50 arch_0jluu1qu_1_1_20101207
-rw-r----- 1 oracle oinstall 9810432 Dec 7 19:50 arch_0iluu1q7_1_1_20101207
-rw-r----- 1 oracle oinstall 15335424 Dec 7 19:50 ctl_file_0kluu1sf_1_1_20101207
-rw-r----- 1 oracle oinstall 371933184 Dec 7 19:54 orcl_0eluu1aa_1_1_20101207
-rw-r----- 1 oracle oinstall 223895552 Dec 7 19:56 orcl_0fluu1ac_1_1_20101207
-rw-r----- 1 oracle oinstall 15335424 Dec 7 19:56 orcl_0gluu1ks_1_1_20101207
2. 使用md5sum命令
2.1 MD5 效验介绍
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。这种变换只与字节的值有关,与字符集或编码方式无关。
MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字节串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字节串有无穷多个,这有点象不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。
一些黑客破获这种密码的方法是一种被称为“跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。
即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P (62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。
2.2 一个简单的演示:
[root@singledb backup]# which md5sum
/usr/bin/md5sum
创建一个文件
[root@singledb backup]# touch tianlesoftware.dba
查看MD5 值
[root@singledb backup]# md5sum tianlesoftware.dba
d41d8cd98f00b204e9800998ecf8427e tianlesoftware.dba
将MD5值保存到某个文件
[root@singledb backup]# md5sum tianlesoftware.dba > tianlesoftware.md5
修改tianlesoftware.dba 文件
[root@singledb backup]# cat tianlesoftware.dba
I AM DBA!
查看修改之后的MD5值
[root@singledb backup]# md5sum tianlesoftware.dba
f040ad46d094e8295533585474d33b50 tianlesoftware.dba
他们的值不一样了,从这个值,可以判断文件有没有变化。
关于MD5SUM命令的更多用法,参考帮助:
[root@singledb backup]# man md5sum
MD5SUM(1) User Commands MD5SUM(1)
NAME
md5sum - compute and check MD5 message digest
SYNOPSIS
md5sum [OPTION] [FILE]...
DESCRIPTION
Print or check MD5 (128-bit) checksums. With no FILE, or when FILE is -, read
standard input.
-b, --binary
read in binary mode
-c, --check
read MD5 sums from the FILEs and check them
-t, --text
read in text mode (default)
The following two options are useful only when verifying checksums:
--status
don’t output anything, status code shows success
-w, --warn
warn about improperly formatted checksum lines
--help display this help and exit
--version
output version information and exit
The sums are computed as described in RFC 1321. When checking, the input should be
a former output of this program. The default mode is to print a line with check-
sum, a character indicating type (‘*’ for binary, ‘ ’ for text), and name for each
FILE.
AUTHOR
Written by Ulrich Drepper, Scott Miller, and David Madore.
REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>.
COPYRIGHT
Copyright © 2006 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of the
GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO
WARRANTY, to the extent permitted by law.
SEE ALSO
The full documentation for md5sum is maintained as a Texinfo manual. If the info
and md5sum programs are properly installed at your site, the command
info md5sum
should give you access to the complete manual.
md5sum 5.97 July 2009 MD5SUM(1)
[root@singledb backup]#