频道栏目
首页 > 资讯 > 其他 > 正文

shell快速迁移海量文件

16-07-20        来源:[db:作者]  
收藏   我要投稿

业务需求:需要把一个目录下的1000多万个文件迁移到远程机器思路:用wget来把文件一个一个的迁移过去,因为文件数量比较大,如果一下在循环操作,会非常慢。所以分批操作,采用化整为零的方法。

#!/bin/sh
home=/usr/local/www/skate/image63delback
cd$home
if[`pwd`==$home];then
a="1100000020000003000000400000050000006000000700000080000009000000"
forbin$a
do
c=`expr$b+100000`
forloopin`sed-n"$b,$c"p$1`
do
path=`echo$loop|awk-F"/"'{print$1"/"$2"/"$3"/"$4}'`
mkdir-p$path
/usr/bin/wgethttp://172.16.111.163/$loop-P$path
echo$loop>>$1.log
done
done
fi

需求2:需要把A目录下的1000多万个小文件分批迁移到B目录,每次1000个,30分钟一次,mv之前需确认B目录为空。

思路:使用python的shutil模块,也用shell,大概思路与上文一般。

#-*-coding:utf-8-*-
importos
importshutil
defTest1(rootDir):
list_dirs=os.walk(rootDir)
count=0
forroot,dirs,filesinlist_dirs:
fordindirs:
printos.path.join(root,d)
ifos.listdir("/data/file/S10032666/"):
print"目录非空,请清空文件。"
return0
else:
forfinfiles:
ifcount<1000:
count=count+1
f=os.path.join(root,f)
shutil.move(f,"/data/file/S10032666/")
printos.path.join(root,f)
else:
return0

Test1("/data/S10032666_bak/")

 

 

相关TAG标签
上一篇:300万粉大号说没就没了,不是封号而是被注销!“读悦文摘”怎么死的"
下一篇:来来来,一起五句话搞定JavaScript作用域
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站