有这么一种迁移海量文件的运维场景:由于现有网站服务器配置不够,需要做网站迁移(就是迁移到另一台高配置服务器上跑着),站点目录下有海量的小文件,大概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下快速迁移海量文件的操作记录的更多相关文章

  1. linux下快速删除大量文件

    昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受.Google了一下,查到了一种方法,试用了下确实比 ...

  2. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  3. Linux下快速查找文件

    1 locate 查找内容.查找数据库,updatedb命令更新数据库 2 which 命令 3 find 路径 -name 查找内容.find命令会磁盘查找,比较耗时. 4 grep 查找内容一般为 ...

  4. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

  5. linux下快速安装jenkins

    Linux下快速安装Jenkins 建议使用 FileZilla 工具简化以下步骤中移动.环境变量配置等步骤. 1      软件下载 l  Java:jdk-7u17-linux-x64.tar.g ...

  6. linux下为目录和文件设置权限

    摘:linux下为目录和文件设置权限 分类: Linux2012-05-09 03:18 7456人阅读 评论(1) 收藏 举报 linuxwordpressweb数据库serverfile linu ...

  7. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  8. linux下恢复误删除的文件方法(ext2及ext3)

     linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直接用debugfs是可以恢复出来的,但对于ext3,d ...

  9. linux下分卷tar.bz文件的合并并解压缩

    linux下分卷tar.bz文件的合并并解压缩 例: linux.tar.bz2.001;linux.tar.bz2.002;linux.tar.bz2.003; 首先 cat linux.tar.b ...

随机推荐

  1. MySQL 相关总结

    MySQL 优秀在线教程 RUNOOB-SQL 教程 MySQL 常用命令 导出操作 -- 某数据库 全部表 结构和数据 mysqldump -h192.168.8.152 -uroot -p man ...

  2. 【HTML】 frame和iframe的区别

    1.frame不能脱离frameSet单独使用,iframe可以: 2.frame不能放在body中:如下可以正常显示: <!--<body>--> <frameset ...

  3. ArcSDE给Oracle添加SDE函数包

    SDE函数包中包含大量的空间计算分析函数,是我们做空间相关分析的一把利刃(目前好像我们只有这一把),有关SDE函数的使用,请见我空间另外的一篇帖子的附件.按照通常教程,过程是这样的1.找到listen ...

  4. arcgis arcengine Using environment settings

    In this topic About using environment settings Environment settings summary table About using enviro ...

  5. childViewController 小计

    设置childViewcontroller Unbalanced calls to begin/end appearance transitions for 以上报错 需要添加 transitionF ...

  6. Android源码中内置包含so文件的APK文件

    方法一: 在packages/apps下面以需要预置的APK名字创建文件夹,以预置一个名为Test的APK为例 将Test.apk放到packages/apps/Test下面 在packages/ap ...

  7. WWDC 后苹果最新 App Store 审核条款!

        WWDC 2016 大会之后,苹果公司发布了四个全新平台:iOS,macOS,watchOS 和 tvOS.并且在此之后,苹果应用商店审核条款也同时进行了更新——貌似不算进行了更新,简直就是重 ...

  8. tableView简单的动画效果

    tableView 中一些动画效果通常都是实现willDisplayCell的方法来展示出一些动画的效果 (1).带有3D效果的小型动态展示 -(void)tableView:(UITableView ...

  9. JQuery,C#,sqlServer 实现无极限多级树形控件

    最近好忙,好长时间没有更新博客了.......... 先看效果图: 此控件利用了 JQuery 插件: treeview google直接搜索就可以找到,这里就不提供链接了. 下载下来的压缩包包括了源 ...

  10. jQuery对表格的操作及其他应用

    表格操作 1.隔行变色:对普通表格进行隔行换色:单击显示高亮样式:复选框选中高亮 <!DOCTYPE html> <html> <head> <meta ht ...