Linux下快速遷移海量文件的操做記錄

 

有這麼一種遷移海量文件的運維場景:因爲現有網站服務器配置不夠,須要作網站遷移(就是遷移到另外一臺高配置服務器上跑着),站點目錄下有海量的小文件,大概100G左右,圖片文件居多。目測直接拷貝過去的話,要好幾天的時間。那麼問題來了,這種狀況下的網站數據要怎麼遷移呢?另外,此網站還在運行中,白天是斷然不能中止了,只能運行深夜停掉幾個小時html

能夠採用的方案以下:
1.利用rsync進行同步。這種方法速度會慢,不過好在支持續傳,在帶寬不高或網站不穩定的狀況下強烈建議用此方法:
1)先修改一下舊站上傳圖片的功能,確保新上傳的圖片保存到另外一個新的目錄地址下;
2)用rsync把舊圖片同步到新的機器上;rsync可限速,同步操做時不會影響網站的對外服務。
3)能夠寫個rsync同步腳本,在夜裏定時執行(好比凌晨1點執行,6點結束同步),100G的文件,要不了幾個晚上就能搞定。
4)待舊站圖片全都同步過去了,再一次性把新上傳的圖片rsync同步過去。並遷移網站代碼。
2.若是網速快,網絡穩定,能夠考慮tar打包(壓縮)後傳輸。不過打包後,要在一個停站週期內完成遷移,對於100G的量的文件傳輸,這種方法不太靠譜。
3.能夠分塊打包,好比根據圖片大小適當的分塊篩選(find)打包,而後再傳輸。
4.若是數據不重要,經過HTTP(wget)傳輸會更快些。
5.直接把舊站服務器的硬盤拿下來,而後將硬盤掛載到新站服務器上,再在新服務器上將nginx站點目錄指向新掛載的硬盤。nginx

實例說明:
好比本機站點目錄/var/www/html下有100多萬個小文件,須要將這些文件遷移到遠程服務器192.168.1.101的/var/www/html目錄下。
操做思路:
直接用rsync把文件一個一個的遷移過去,由於文件數量比較大,若是一會兒在循環腳本里操做,會很是慢。
因此決定用分批操做,採用化整爲零的方法bash

爲了試驗效果,能夠先在/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.shssh

2)採用wget方式(假設本機ip爲192.168.1.99)oop

[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
相關文章
相關標籤/搜索