scp 传输中断后如何用 rsync --partial-dir 实现断点续传

发布时间 - 2026-01-22 00:00:00    点击率:
rsync断点续传需显式启用--partial并配合--partial-dir指定临时目录,传输中断后可基于已有内容续传;推荐--append-verify校验已传部分,避免数据不一致。

rsync 本身不依赖 scp,但很多人误以为 rsync 是基于 scp 的传输方式。实际上,rsync

默认使用自己的协议(通过 rsh 或 ssh 作为传输通道),而 --partial-dir 是 rsync 专为断点续传设计的核心选项之一——它能安全保存传输中未完成的临时文件,避免重复传输已传部分。

理解 --partial-dir 的作用机制

--partial-dir 指定一个临时目录,rsync 在传输大文件时,会先把未完成的部分写入该目录下的同名文件中;传输成功后,再原子性地将该文件移入目标位置。如果中断,下次运行时 rsync 能识别该临时文件,并基于其已有内容继续上传(需配合 --partial--append--append-verify)。

  • 必须显式启用 --partial(否则中断时临时文件会被删除)
  • 对大文件续传,推荐用 --append-verify(校验已传部分,更安全)而非仅 --append
  • 临时目录路径建议用绝对路径,且确保有写权限;rsync 不会自动创建父目录

典型断点续传命令示例

假设通过 SSH 向远程服务器传输大文件,希望支持中断恢复:

rsync -av --partial --partial-dir=/tmp/rsync-partial \
  --append-verify \
  /local/bigfile.dat user@host:/remote/
  • /tmp/rsync-partial 是本地临时目录(若同步到远程,该目录也需在远程存在且可写)
  • 若同步方向是远程→本地,--partial-dir 指的是本地路径;若本地→远程,则指远程路径
  • 首次运行后中断,再次执行相同命令即可续传,无需额外参数

注意事项与常见问题

rsync 的断点续传不是“自动感知上次中断位置”,而是依赖文件大小、修改时间、校验和等综合判断。以下情况会影响续传效果:

  • 源文件在传输中断后被修改:rsync 可能重传整个文件(除非加 --ignore-times 强制跳过时间检查)
  • 未指定 --partial-dir 但用了 --partial:临时文件直接放在目标目录,文件名带 .~tmp~ 后缀,易混淆且不安全
  • 远程端磁盘满或权限不足:可能导致 --partial-dir 创建失败,rsync 报错退出,需提前检查
  • 不要混用 --compress 和断点续传:压缩会改变数据流,导致 --append-verify 失效

替代方案:用 --inplace + --partial 更轻量?

如果不想管理独立临时目录,可用 --inplace --partial 直接在目标位置更新文件(适合单文件、空间受限场景):

rsync -av --partial --inplace --append-verify /local/file user@host:/remote/
  • 优点:无需额外目录,适合嵌入式或权限受限环境
  • 风险:传输中目标文件始终存在且内容不完整,可能被其他进程误读
  • 不适用于硬链接、ACL、xattr 等元数据敏感场景(--inplace 会绕过部分安全检查)


# app  # 常见问题  # append  # ssh  # 断点续传  # 续传  # 临时文件  # 已有  # 大文件  # 自己的  # 放在  # 首次  # 很多人  # 误读 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  Laravel如何集成Inertia.js与Vue/React?(安装配置)  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在橙子建站上传落地页?操作指南详解  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  千库网官网入口推荐 千库网设计创意平台入口  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Swift中循环语句中的转移语句 break 和 continue  青岛网站建设如何选择本地服务器?  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  在线制作视频的网站有哪些,电脑如何制作视频短片?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Swift开发中switch语句值绑定模式  中山网站推广排名,中山信息港登录入口?  EditPlus中的正则表达式实战(5)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  javascript基于原型链的继承及call和apply函数用法分析  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  实例解析Array和String方法  怎样使用JSON进行数据交换_它有什么限制  Python自动化办公教程_ExcelWordPDF批量处理案例  高防服务器租用如何选择配置与防御等级?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  如何基于云服务器快速搭建个人网站?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  如何在景安云服务器上绑定域名并配置虚拟主机?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  JS碰撞运动实现方法详解  浅谈javascript alert和confirm的美化  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何在阿里云域名上完成建站全流程?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  php json中文编码为null的解决办法  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  jQuery中的100个技巧汇总  如何在IIS中新建站点并解决端口绑定冲突?  Python文件操作最佳实践_稳定性说明【指导】