服务器之间迁移大文件

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

背景

最近公司有一台服务器从 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 文档

# 传输文件
# -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

解释一下上面执行命令的参数:

  • -P 支持断点续传, 网络传输中网络断开是很可能发生的
  • -e "ssh -p2222" 指定ssh传输方式, SRC的ssh端口非默认的22端口
  • --progress 显示进度, 方便肉眼观察

由于传输的是zip压缩包, 因此未加上 -z 参数.

    原文作者:嘉兴ing
    原文地址: https://segmentfault.com/a/1190000019374113
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞