启用断点续传需同时使用--partial和--progress(或-P),配合--rsh指定端口;公网不稳定时用tmux包裹rsync并配--timeout与--contimeout实现自动重试;还需配置SSH保活、连接复用及验证磁盘空间与权限。

在统信UOS命令行中用rsync同步海量文件时,网络抖动或终端意外中断会导致传输失败,必须依靠断点续传机制避免从头开始重传,否则百GB级文件反复传输既耗带宽又浪费时间。
启用断点续传的核心参数组合
执行rsync命令时,【--partial --progress】必须同时使用:--partial确保传输中断后保留已下载的不完整文件,--progress实时显示进度并支持重试定位。单独加--partial不显示进度,单独加-P(等价于--partial --progress)但漏掉--rsh配置,在非标准端口下仍会连接失败。
基础命令结构为:rsync -avzP --rsh="ssh -p 2222" user@host:/data/ ./local_data/
其中-P不可省略,它比手动写--partial --progress更简洁且不易遗漏。
应对公网不稳定环境的增强策略
方法一:用tmux包裹rsync实现会话保活与自动重试
先创建持久化终端会话:tmux new -s rsync_bulk
再运行带重试逻辑的循环命令:
while ! rsync -avzP --timeout=60 --contimeout=60 --rsh="ssh -i ~/.ssh/id_rsa_uos -o StrictHostKeyChecking=no" /home/user/large_dataset/ user@192.168.10.50:/backup/dataset/; do echo "传输中断,60秒后重试"; sleep 60; done
该脚本在连接超时或传输中断后自动等待1分钟重试,无需人工干预。注意【--timeout=60和--contimeout=60必须成对出现】,前者控制数据传输阶段超时,后者控制SSH连接建立阶段超时,缺一则无法覆盖全部失败场景。
执行完按Ctrl+B再按D分离会话,关机不影响后台运行。
确保断点续传生效的关键前提
第一步:确认远程服务器SSH服务支持连接保持
在远程服务器的/etc/ssh/sshd_config中检查以下两行未被注释且值合理:
TCPKeepAlive yes
ClientAliveInterval 30
第二步:本地SSH配置启用连接复用
编辑~/.ssh/config,添加:
Host 192.168.10.50
ControlMaster auto
ControlPersist 4h
这能显著减少重复建立SSH连接的开销,尤其在海量小文件场景下可提升整体续传稳定性。
第三步:验证目标路径磁盘空间与权限
运行ssh user@192.168.10.50 'df -h /backup && ls -ld /backup/dataset',确保剩余空间大于待传文件总大小,且用户对目标目录有写权限——否则rsync会在写入阶段报错退出,且不会触发--partial保护机制。

















