Linux 平台下,经常使用SCP 传输文件:
比如传输文件
scp /cndba/targe.tar.gz root@192.168.74.100:/cndba/large.tar.gz
传输目录
scp -r /cndba root@192.168.74.100:/cndba
但在网络不好或者文件较大的时候,SCP 容易中断,而SCP 又不支持断点续传,如果此时已经传输了80%,那么重头上传会比较费时间。此时可以利用rsync命令,直接续传剩下的部分即可。
使用之前先使用yum安装sshpass 和 rsync 工具:
[dave@www.cndba.cn tencent]# yum install rsync sshpass -y
yum 的配置参考我的博客:
Linux 平台下 yum 源 配置 手册
https://www.cndba.cn/dave/article/154
创建rsync 的shell脚本:rsync.sh
添加如下内容,这里根据具体情况进行修改:
sshpass -p 'https://www.cndba.cn/dave' rsync -avzP -e 'ssh -p 22' --checksum --inplace --no-whole-file --bwlimit=10000 dir/fielname root@192.168.74.100:/backup >> /tmp/log1 &
脚本赋权并后台运行:
chmod +x rsync.sh
nohup ./rsync.sh
参数说明:
sshpass -p:用户指定远程用户的密码,
-checksum:文件分块计算校验和,只传输校验和不一致的部分
-in-place:将文件原地替换,因为rsync通常会写一个临时文件,然后移动
-no-whole-file:不复制整个文件,而是使用deltas部分传输
-a:以archive模式操作,复制目录、符号连接,等价于 -rlptgoD 。
-v:详细提示
-z:压缩
-P:是综合了--partial --progress两个参数
--partial:如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上删除已拷贝的部分文件。 如果想在下次拷贝时续传文件,不需要重新拷贝所有文件的话,可以使用-partial选项阻止rsync在传输中断时删除已拷贝的部分
--progress 显示进度条
-e:参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器
ssh -p 61204 指定ssh的端口(非默认22)61204
--bwlimit: --bwlimit=10000 限制带宽为10000k Bytes/s 约10M
版权声明:本文为博主原创文章,未经博主允许不得转载。