使用rsync向服务器迁移大文件
作者:互联网
场景
本人将12G本地单文件(12G大小h5文件数据集)向Linux服务器进行大文件上传时传输失败。最初使用 scp
命令或 rsync
直接对大文件进行传输,会出现网络断开或服务器端管道破裂情况,而且一次性无法传输的话也会耗费很多时间。
步骤
为了解决此问题,可分为以下步骤进行操作:
# 打包压缩大文件
zip -r archive.zip ./bigfile
# 可选:将压缩包拆分成1G文件
# -b后输入子节 若要拆分为1G文件块 1G=1073741820 byte
split -b 1073741820 archive.zip archive_split
# 此时文件会分为很多带有字母后缀的archive_split{a, b..}之类的文件 对其进行rsync传输
# 在服务器端对传输来的文件块进行合并
cat archive_split* > new_archive.zip
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 --compress ./archive_split* root@ip:/xxx/xxx/
解释一下上面执行命令的参数:
-P
支持断点续传,网络传输中网络断开是肯可能发生的--progress
显示进度,方便肉眼观察--compress
对备份文件在传输时进行压缩处理
标签:文件,rsync,--,传输,split,服务器,迁移,archive 来源: https://www.cnblogs.com/S1mpleBug/p/16685787.html