linux迁移大量文件夹,大批量文件迁移解决方案

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28869493/viewspace-2138701
简单的来说: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.txt

}&

done

这样每个文件夹会生产一个文件,里面包含了所有文件的信息,

然后2个目录的文件进行 diff对比即可。

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

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

你可能感兴趣的:(linux迁移大量文件夹,大批量文件迁移解决方案)