Linux大文件拆分傳輸
遠程傳輸大文件時,如果網絡不穩定容易功虧一篑,此時可考慮將大文件按指定大小拆分成多個小文件,便於重傳。
可通過對比文件傳輸前後的MD5碼,判斷文件是否損壞或被篡改。
以下以傳輸一個17G大文件(win2008.img)作完整示例:
1、計算大文件MD5碼:
Java代碼
md5sum win2008.img
2、按固定大小500M進行拆分:
Java代碼
split -b 500m win2008.img win2008
其中win2008.img為待拆分文件名,win2008為拆分生成文件名前綴,生成文件為
win2008aa、win2008ab.......win2008az、win2008ba....win2008bh
根據被拆分文件實際大小,最後一個小文件可能不足500M。
3、計算每個小文件的MD5碼:
Java代碼
for var in $(ll |grep win2008 | awk '{print $9}'); do md5sum $var;done
將輸出的一列MD5碼粘貼到excel中便於比對。
4、scp遠程傳輸所有小文件。
5、傳輸完畢後,在目標機計算所有小文件MD5碼,如果某個小文件和傳輸前對應小文件的MD5碼不同則說明文件不正確,重新傳輸。
6、將小文件合並成大文件
Java代碼
cat win2008* > win2008.img
分割的時候是按字母順序排下來的,cat也是按照字母順序處理的。
7、計算合成大文件的MD5碼:
Java代碼
md5sum win2008.img
8、和傳輸前大文件MD5碼一致表明大文件成功傳輸。