服務器之間遷移大文件

Last-Modified: 2019年6月3日15:01:20linux

背景

最近公司有一臺服務器從 ucloud 遷移到 華爲雲, 一坨MongoDB數據庫須要遷移.數據庫

爲何使用 rsync:服務器

  • 大文件傳輸就不要想着ftp了: 服務器A -> 本地 -> 服務器B
  • scp傳輸超大文件, 萬一遇到網絡斷開就得哭了

小提示:網絡

  • 記得在源服務器那邊買個臨時帶寬包, 以避免浪費時間

傳輸前準備

# 打包壓縮的文件
zip -r archive.zip ./*

# 可選: 將壓縮包拆分紅1G一個的小文件
# -d 使用數字後綴, 而不是字母后綴
split -b 1G -d archive.zip archive_split

# split 對應的合併命令
cat archive_split* > new_archive.zip

rsync 傳輸

rsync 文檔ssh

# 傳輸文件
# -P,----partial     斷點續傳(保留那些因故沒有徹底傳輸的文件,以便加快隨後的再次傳輸)
# -e                 以ssh方式進行數據傳輸, ssh -p2222 指定鏈接2222端口
# --progress         顯示傳輸進度
# --bwlimit            限速, 字節/秒
# -r,--recursive     對子目錄以遞歸模式處理
# -c, --checksum     打開校驗開關,強制對文件傳輸進行校驗。
# --delete             刪除那些DST中SRC沒有的文件。
# -z, --compress     對備份的文件在傳輸時進行壓縮處理。
# --exclude=PATTERN 指定排除不須要傳輸的文件模式。
# --include=PATTERN 指定不排除而須要傳輸的文件模式。
# -v, --verbose 詳細模式輸出。
# -q, --quiet 精簡輸出模式。
# -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD

rsync -P -e "ssh -p2222" --progress --bwlimit=1024 root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip

解釋一下上面執行命令的參數:ui

  • -P 支持斷點續傳, 網絡傳輸中網絡斷開是極可能發生的
  • -e "ssh -p2222" 指定ssh傳輸方式, SRC的ssh端口非默認的22端口
  • --progress 顯示進度, 方便肉眼觀察

因爲傳輸的是zip壓縮包, 所以未加上 -z 參數..net

相關文章
相關標籤/搜索