大批量文件迁移解决方案

在我们日常工作中,有很多的时候需要进行文件迁移,但是诸如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/
}&  
done 

这个脚本就是进行并发执行CP命令。如果是不在后面加&那么时间还和CP 一样,但是加了& 就以后台进程方式执行, 迅速执行下一个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
}&  
done
这样每个文件夹会生产一个文件,里面包含了所有文件的信息,
然后2个目录的文件进行 diff对比即可。

是不是简单,方便很多的呀!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28869493/viewspace-2138701/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28869493/viewspace-2138701/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值