shell快速迁移海量文件
业务需求:需要把一个目录下的1000多万个文件迁移到远程机器
思路:用wget来把文件一个一个的迁移过去,因为文件数量比较大,如果一下在循环操作,会非常慢。所以分批操作,采用化整为零的方法。
#! /bin/sh home=/usr/local/www/skate/p_w_picpath63delback cd $homeif [ `pwd` == $home ];then a="1 1000000 2000000 3000000 4000000 5000000 6000000 7000000 8000000 9000000"for b in $ado c=`expr $b + 100000`for loop in `sed -n "$b,$c"p $1`do path=`echo $loop | awk -F "/" '{print $1"/"$2"/"$3"/"$4}'`mkdir -p $path/usr/bin/wget http://172.16.111.163/$loop -P $pathecho $loop >> $1.logdone done fi
需求2:需要把A目录下的1000多万个小文件分批迁移到B目录,每次1000个,30分钟一次,mv之前需确认B目录为空。
思路:使用python的shutil模块,也用shell,大概思路与上文一般。
# -*- coding: utf-8 -*-
import os
import shutil
def Test1(rootDir): list_dirs = os.walk(rootDir) count=0for root, dirs, files in list_dirs: for d in dirs: print os.path.join(root, d) if os.listdir("/data/file/S10032666/"):print "目录非空,请清空文件。"return 0else:for f in files: if count < 1000:count=count +1f = os.path.join(root, f)shutil.move(f,"/data/file/S10032666/")print os.path.join(root, f) else:return 0Test1("/data/S10032666_bak/")
我们也可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。
1、先建立一个空目录 mkdir /data/blank 2、用rsync删除目标目录 rsync --delete-before -d -a -H -v --progress --stats /data/blank/ /var/edatacache/ 或者 rsync --delete-before -d /data/blank/ /var/edatacache/这样/var/edatacache目录就被快速的清空了。选项说明: –delete-before 接收者在传输之前进行删除操作 –progress 在传输时显示传输过程 -a 归档模式,表示以递归方式传输文件,并保持所有文件属性 -H 保持硬连接的文件 -v 详细输出模式 –stats 给出某些文件的传输状态 -d transfer directories without recursing3、也可以用来删除大文件假如我们在/root/下有一个几十G甚至上百G的文件data,现在我们要删除它 一、创建一个空文件 touch /root/empty 二、用rsync清空/root/data文件 rsync --delete-before -d --progess --stats /root/empty /root/data
转载于:https://blog.51cto.com/strongit/1812396
shell快速迁移海量文件相关推荐
- Linux下快速迁移海量文件的操作记录
有这么一种迁移海量文件的运维场景:由于现有网站服务器配置不够,需要做网站迁移(就是迁移到另一台高配置服务器上跑着),站点目录下有海量的小文件,大概100G左右,图片文件居多.目测直接拷贝过去的话,要好 ...
- Linux下使用rsync最快速删除海量文件的方法
遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用.这个时候,我们常用的删除命令rm -fr * 就不好用了,因为要等待的时间太长.所以必 ...
- Linux下使用rsync最快速删除海量文件的方法分享
点评:昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用 这个时候,我们常用的删除命令rm -fr * 就不好用了,因为要等待的时间太 ...
- mysql innodb表移植_mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件...
假设需求:需要把库test1中的的数据迁移到test2中,并且test2中数据量特别大 硬性条件:1.mysql 使用 Innodb引擎,且开启独立表空间,2.两个库的mysql版本一致(不同版本下未 ...
- linux快速删除海量文件
首先创建一个临时目录: /rubbish rsync --delete-before -a -H -v --progress --stats /rubbish /111 /111为目的目录 选项说明: ...
- 更换电脑,文件数据如何快速迁移?
最近小编收到很多私信,都想知道换新电脑了,怎么转移旧电脑上的文件数据?确实,现在很多人都依赖电脑,公司家里都要用,甚至家里还不止一台电脑,为了自己的需求也会更换主机或者更换电脑. 但是在更换电脑的时候 ...
- 基于sersync海量文件实时同步
今天我们主要讲解海量文件实时同步,最近涉及到数百万图片数据迁移,为了使图片数据快速迁移,并保证数据数据的一致性,无缝切换.尝试了多种方案. 方案1:rsync+inotify同步,最先想到的是此方案, ...
- 关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究...
背景介绍 随着业务的发展.需求的变化,促使我们追求使用不同类型的数据库,充分发挥其各自特性.如果决定采用新类型的数据库,就需要将既有的数据迁移到新的数据库中.在这类需求中,将SQL Server中的数 ...
- linux dd 截文件,Linux使用dd命令快速生成大文件(转)
dd命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero ...
最新文章
- WEP保护帧移除工具airdecloak-ng
- 【机器视觉】 dev_disp_text算子
- .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行
- mysql 备份html数据_MySQL自动化生成HTML页面(导出数据)极限SQL编程-sql文件怎么打开...
- 连续反应matlab,MATLAB和Monte Carlo法在连续反应动力学中的应用.pdf
- oracle sql 查询优化器,基于ORACLE成本优化器的SQL查询优化分析与应用
- 真的没办法一心一意麽? php 文件操作
- 从资源管理器中,获取被选择的文件的路径(及文件夹)的API
- python数字图像处理(6):图像的批量处理
- 处理App状态改变的策略
- 提高上网速度的六种方法
- 罗马数字转换python_罗马数字转整数 python
- python 爬取网上数据Crawler data(1.漫画)
- 计算机cpu型号在哪看,cpu型号,教您电脑cpu型号怎么看
- 将计算机放置桌面右上角,如何给电脑桌面上添加我的电脑快捷方式
- 安卓ROOT全教程(测试机 红米Note7Pro)
- win10网上邻居无法显示计算机,win10网上邻居看不到别的共享电脑怎么办
- IPTV的开展在广电企业、电信运营商角度上的异同
- C# WinForm中Form的load和Shown事件
- libxml2对XML文件的创建、解析、查找、修改