Linux下快速迁移海量文件的操作记录
有这么一种迁移海量文件的运维场景:由于现有网站服务器配置不够,需要做网站迁移(就是迁移到另一台高配置服务器上跑着),站点目录下有海量的小文件,大概100G左右,图片文件居多。目测直接拷贝过去的话,要好几天的时间。那么问题来了,这种情况下的网站数据要怎么迁移呢?另外,此网站还在运行中,白天是断然不能停止了,只能运行深夜停掉几个小时。
可以采用的方案如下:
1.利用rsync进行同步。这种方法速度会慢,不过好在支持续传,在带宽不高或网站不稳定的情况下强烈建议用此方法:
1)先修改一下旧站上传图片的功能,确保新上传的图片保存到另一个新的目录地址下;
2)用rsync把旧图片同步到新的机器上;rsync可限速,同步操作时不会影响网站的对外服务。
3)可以写个rsync同步脚本,在夜里定时执行(比如凌晨1点执行,6点结束同步),100G的文件,要不了几个晚上就能搞定。
4)待旧站图片全都同步过去了,再一次性把新上传的图片rsync同步过去。并迁移网站代码。
2.如果网速快,网络稳定,可以考虑tar打包(压缩)后传输。不过打包后,要在一个停站周期内完成迁移,对于100G的量的文件传输,这种方法不太靠谱。
3.可以分块打包,比如根据图片大小适当的分块筛选(find)打包,然后再传输。
4.如果数据不重要,通过HTTP(wget)传输会更快些。
5.直接把旧站服务器的硬盘拿下来,然后将硬盘挂载到新站服务器上,再在新服务器上将nginx站点目录指向新挂载的硬盘。
实例说明:
比如本机站点目录/var/www/html下有100多万个小文件,需要将这些文件迁移到远程服务器192.168.1.101的/var/www/html目录下。
操作思路:
直接用rsync把文件一个一个的迁移过去,因为文件数量比较大,如果一下子在循环脚本里操作,会非常慢。
所以决定用分批操作,采用化整为零的方法。
为了试验效果,可以先在/var/www/html目录下造数
[root@bastion-IDC ~]# cd /var/www/html
[root@bastion-IDC ~]# for i in `seq 1 1000000`;do touch test$i;done
1)采用rsync同步方法
[root@bastion-IDC ~]# cat /root/rsync.sh
#!/bin/bash
home=/var/www/html
cd $home
if [ `pwd` == $home ];then
a="1 100000 200000 300000 400000 500000 600000 700000 800000 900000" //比100万低一级单位,即10万的单位
for b in $a
do
c=`expr $b + 10000` //比10万低一级单位
for loop in $(ls -l|sed -n "$b,$c"p|awk -F" " '{print $9}')
do
rsync $loop 192.168.1.101:$home
done
done
fi
[root@bastion-IDC ~]# chmod 755 /root/rsync.sh
[root@bastion-IDC ~]# /bin/bash /root/rsync.sh
2)采用wget方式(假设本机ip为192.168.1.99)
[root@bastion-IDC ~]# cat /root/rsync.sh
#!/bin/bash
home=/var/www/html
cd $home
if [ `pwd` == $home ];then
a="1 100000 200000 300000 400000 500000 600000 700000 800000 900000"
for b in $a
do
c=`expr $b + 10000`
for loop in $(ls -l|sed -n "$b,$c"p|awk -F" " '{print $9}')
do
/usr/bin/ssh root@192.168.1.101 "/usr/bin/wget http://192.168.1.99/$loop -P /var/www/html"
done
done
fi
Linux下快速迁移海量文件的操作记录的更多相关文章
- linux下快速删除大量文件
昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...
- Linux下部署Samba服务环境的操作记录
关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...
- Linux下快速查找文件
1 locate 查找内容.查找数据库,updatedb命令更新数据库 2 which 命令 3 find 路径 -name 查找内容.find命令会磁盘查找,比较耗时. 4 grep 查找内容一般为 ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
- linux下快速安装jenkins
Linux下快速安装Jenkins 建议使用 FileZilla 工具简化以下步骤中移动.环境变量配置等步骤. 1 软件下载 l Java:jdk-7u17-linux-x64.tar.g ...
- linux下为目录和文件设置权限
摘:linux下为目录和文件设置权限 分类: Linux2012-05-09 03:18 7456人阅读 评论(1) 收藏 举报 linuxwordpressweb数据库serverfile linu ...
- linux下生成core dump文件方法及设置
linux下生成core dump文件方法及设置 from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...
- linux下恢复误删除的文件方法(ext2及ext3)
linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...
- linux下分卷tar.bz文件的合并并解压缩
linux下分卷tar.bz文件的合并并解压缩 例: linux.tar.bz2.001;linux.tar.bz2.002;linux.tar.bz2.003; 首先 cat linux.tar.b ...
随机推荐
- Java之方法重载篇(我重载了,你要如何来调用我。。)
一.课前引言 请看一下代码,你发现什么特殊之处了吗? public class MethodOverload { public static void main(String[] args) { ...
- SqlServer灾备方案(本地)
如果你曾经有那么一个不经意的心跳来自于数据库数据损坏:错误的新增.更新.删除 .那么下面的方案一定能抚平你的创伤! 对于一个数据库小白来说,数据库的任何闪失带来的打击可说都是致命的.最初,我们让一个叫 ...
- github指令
一般用法 git stash git pull git stash pop 结局冲突 git add . git commit -m "message" git push 查看 g ...
- kmdjs api reference
总览 kmdjs的主要就两个API:kmdjs.config和define kmdjs.config kmdjs.config是用于项目整体配置,一般的配置如下所示: kmdjs.config({ n ...
- MYSQL进阶,新手变司机
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...
- Linux入侵检测常用命令
find / -mtime 0 #0代表目前时间,表示从现在开始到24小时以前,有改动过内容的文件全都会被列出来.如果是3天前24小时内,则使用find / -mtime 3 find /etc -n ...
- Android中的AlertDialog使用示例二(普通选项对话框)
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...
- 一起来学习Android自定义控件2-简单的写字板控件
概述 上一篇文章我们对自定义控件进行了一个大体的知识介绍.今天就来学习自定义一个简单的写字板控件. 先来看看效果图 就是简单的根据手指写下的轨迹去画出内容 实现 在上一篇文章里提到了android官方 ...
- 添加 All Exceptions 断点后, 每次运行都会在 main.m 中断的一种解决方法
在本人项目添加导入和使用新的字体过程中,遇到一个很奇怪的问题: 项目开启了全局断点,但是每次启动都会运行在mian.m中断,点击下一步程序继续正常运行. 不知道是什么原因,于是google百度寻找答案 ...
- postfix与sendmail冲突
在Linux服务器(CentOS release 6.6)上配置好了sendmail后,测试发送邮件时发现有问题,检查sendmail服务的状态,发现其处于"sendmail dead bu ...