在我们日常工作中有很多的时候需要进行文件迁移但是诸如10T之类的大文件(里面包含若干小文件的时候)我们如果单单使用CP的命令进行迁移的话
那么他的效率经过测试1分钟最多也就1G之内的效率。所以如何提高迁移效率呢我们就需要使用并发执行的方式进行
比如说/data目录中有100个文件夹需要迁移到本机器的/data2目录下。如何开展
简单的来说cp -r /data/ /data2 即可。但是这样迁移的话就会消耗大量的时间因为在/data下面还有很多文件夹逐级目录然后散列的一些小文件。
据统计效率应该在1G每分钟那么在线迁移10T消耗大约为10000分钟约为7天不包含之间有效率降低。
那么怎么做才能加快迁移效率呢很显然那就是多开CP命令将服务器的IO全部调用起来。
如何开
首先/data目录下面有几百个目录那么我们可以进行目录的提取如ls -l |awk {print $9} >> Folder.txt
编写批量迁移脚本
#!/bin/bash
cat Folder.txt.txt|while read line
do
{
cp -r $line /data2/
}但是加了 迅速执行下一个CP命令。
如果100个文件夹那么我们可以把时间缩短10倍。
这样是不是很简单的呢
同时迁移完成之后怎么进行文件一致性校验的呢这里介绍一个MD5文件校验。
MD5算法常常被用来验证网络文件传输的完整性防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5)此算法对任意长度的信息逐位进行计算产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”)不同的文件产生相同的报文摘要的可能性是非常非常之小的。
在Linux或Unix上md5sum是用来计算和校验文件报文摘要的工具程序。一般来说安装了Linux后就会有md5sum这个工具直接在命令行终端直接运行。
#!bin/sh
cat Folder.txt|while read line
do
{
find $line -type f -not \( -name .* \) -exec md5sum {} \; >>$line.txt
}里面包含了所有文件的信息
然后2个目录的文件进行 diff对比即可。
是不是简单方便很多的呀
来自 “ ITPUB博客 ” 链接http://blog.itpub.net/28869493/viewspace-2138701/如需转载请注明出处否则将追究法律责任。