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 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoDrsync -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
参数.