有这么一种迁移海量文件的运维场景:由于现有网站服务器配置不够,需要做网站迁移(就是迁移到另一台高配置服务器上跑着),站点目录下有海量的小文件,大概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 $homeif [ `pwd` == $home ];thena="1 100000 200000 300000 400000 500000 600000 700000 800000 900000"             //比100万低一级单位,即10万的单位for b in $adoc=`expr $b + 10000`                                       //比10万低一级单位for loop in $(ls -l|sed -n "$b,$c"p|awk -F" " '{print $9}')dorsync $loop 192.168.1.101:$homedonedonefi

[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 $homeif [ `pwd` == $home ];thena="1 100000 200000 300000 400000 500000 600000 700000 800000 900000"            for b in $adoc=`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"donedonefi

转载于:https://www.cnblogs.com/kevingrace/p/6245488.html

Linux下快速迁移海量文件的操作记录相关推荐

  1. linux查看用户的操作记录,Linux下查看用户登陆后的操作记录

    Linux下查看用户登陆后的操作记录  在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台 服务器多人登陆, ...

  2. Linux下查看用户登陆后的操作记录

    Linux下查看用户登陆后的操作记录 在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台 服务器多人登陆,一 ...

  3. Linux下快速删除大量文件/文件夹方法--rsync

    假如你要在linux下删除大量文件,比如100万.1000万,像/var/spool/clientmqueue/的mail邮件, 像/usr/local/nginx/proxy_temp的nginx缓 ...

  4. Linux下快速删除大量文件/文件夹方法

    一.场景描述 假如你要在linux下删除大量文件,比如100万.1000万,像/var/spool/clientmqueue/的mail邮件, 像/usr/local/nginx/proxy_temp ...

  5. shell快速迁移海量文件

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

  6. linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作

    检查数据文件的位置如下: SQL> select name from v$datafile; NAME --------------------------------------------- ...

  7. linux快速删除60万文件,Linux下快速删除大量文件

    rsync --delete-before -d /tmp/empty/ /the/folder/you/want/delete/ 不要忘记文件夹后的"/" 附: rsync的跟删 ...

  8. linux下怎么批量命名文件,linux下的文件操作——批量重命名

    概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等.文本主要为你讲解如何实现这些操作 1.删除所有的 .bak 后缀: renam ...

  9. mysql linux 数据库文件位置_mysql在linux下修改mysql数据库文件位置

    linux下(这里是centos),mysql安装后,数据库的数据默认存放在/var/lib/mysql目录下,如果该目录下挂载的磁盘空间很少,不够用,需要迁移到其他的目录位置. 方法一: 参照win ...

最新文章

  1. ios--用证书进行真机调试(转)
  2. 用计算机画函数图像教案,信息技术应用 用计算机画函数图象教案1
  3. 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例二 | 修改边界条件 | 使用递推方法证明 )
  4. 乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
  5. Caffe 编译错误记录
  6. Oracle Golden Gate概要
  7. LeetCode 5377. 将二进制表示减到 1 的步骤数
  8. python用generator打印杨辉三角_python写generator输出杨辉三角遇到问题,望高手解答!...
  9. python颜色识别_python实现简单颜色识别程序
  10. 看我是怎样捣鼓Linux的
  11. Python Crash Course读书笔记 - 第19章:USER ACCOUNTS
  12. 东芝有刷直流电机驱动器IC TB67H450FNG
  13. 【网站】数字滚动效果的实现方法
  14. 数据库SQL语句UPDATE能否修改主码
  15. 机械指令 对应 汇编指令
  16. Python数据分析高薪实战第十二天 网络服务用户流失预测分析和国产电视剧评分预测分析
  17. 学计算机必须要买电脑,大一新生开学要不要买电脑?听听学姐的建议,不了解可能“吃亏”...
  18. 【划分型DP】统计单词个数
  19. OpenWrt 系统定制WR841N Reset Button不工作
  20. 深度学习相关概念:梯度下降

热门文章

  1. outlook 未安装信息服务器,Outlook Web Access 未初始化并且在客户端访问服务器上的应用程序日志中记录了事件 ID 64...
  2. mybatis 调用存储过程_你真的该进来了解下MyBatis的SQL工作流程了
  3. DFA的构造C语言,DFA的编程实现含源代码实验报告剖析
  4. 使用tensoflow serving来部署模型推理节点
  5. java 文件流关闭 finally,关于java:为什么需要在“ finally”内关闭文件,而仍将其嵌入在“ try / catch”块内?...
  6. vant 软键盘_移动端页面输入底部被软键盘遮挡问题
  7. java maven 没有target_Maven最全知识点总结 可以收藏啦
  8. git merge 回退_Git命令
  9. lucky前面加a还是an_微信昵称前加个“A” 不是微商就是销售?看看这个“A”的含义!...
  10. raid卡缓存对硬盘性能_Mac Pro 2019加装2.5英寸机械硬盘方案