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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BeJavaGod

[群友分享] 第一次安装liunx系统排坑总结

本文来自群友“易水难求”总结,适合新手排坑 第一次安装设置虚拟机爬坑总结 第一坑:使用VMware Workstation 11版本的设备安装 CentOS-...

3957
来自专栏PHP在线

在Mac下使用MAMP Pro环境

以前,我使用Windows作为自己的工作系统,后来,改用Mac作为自己的主要工作系统了。 在Windows下,快速搭建*AMP环境,使用xampp或者WAMP之...

7417
来自专栏张戈的专栏

解决dos2unix/unix2dos报错,并在家目录下生成u2dtmp*文件问题

最近接到一个 case:大数据分析那边反馈我们这边推送的数据同比去年同期少了很多。这是很不正常的,因为业务一直在增长。 ? 于是,我开始顺藤摸瓜的跟进。一开始就...

5786
来自专栏张首富-小白的成长历程

强制编辑文件,文件属主和属组自动改变

为什么对文件的权限是r--权限 对文件所在目录的权限是rwx权限 我们也能强制保存文件,但是保存之后的文件属主和属主就变了? 猜想:因为我们文件所在目录有rwx...

1613
来自专栏Fred Liang

Service Worker 实现 web 应用消息推送

Service Worker 是事件驱动的 worker,生命周期与页面无关,关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动.

6552
来自专栏Android先生

20分钟教你使用hexo搭建github博客

备注:该教程基于Hexo 2.x版本,目前Hexo是3.x版本,照本教程实现有可能会出现404错误,笔者目前还未找时间去解决,待笔者找时间解决该问题后,再写一篇...

1202
来自专栏腾讯移动品质中心TMQ的专栏

Appium:轻松玩转app+webview混合应用自动化测试

Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,可是却是有自身独当一面的能力,可以完成许多高难度作业,完...

3.1K1
来自专栏逸鹏说道

Web前端性能优化教程03:网站样式和脚本&减少DNS查找、避免重定向

一、将样式表放在顶部 可视性回馈的重要性 进度指示器有三个主要优势——它们让用户知道系统没有崩溃,只是正在为他或她解决问题;它们指出了用户大概还需要等多久,以便...

41613
来自专栏IMWeb前端团队

fis3 新特性应用

本文作者:IMWeb 黎清龙 原文出处:IMWeb社区 未经同意,禁止转载 fis3 新特性应用 1 前言 fis3相比fis2,核心思路并没有改变 ...

2269
来自专栏云计算教程系列

在Ubuntu 16.04上安装OpenVAS 8

OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费...

2052

扫码关注云+社区

领取腾讯云代金券