文件传输卡在 100%:如何判断校验与最终处理是否完成
文件传输卡在 100% 可能仍在回读校验或完成目标端操作。通过日志、读取流量与验收结果,判断还有哪些工作尚未结束。
传输进度到了 100%,网络流量降了下来,剪辑师却还在等素材。重新启动任务前,先确认百分比统计的是什么:它可能只记录已发送的数据量,而校验或目标端的最后一道操作仍在进行。
排查时,应分开看三个时间点:数据发送完毕、目标端操作完成,以及交付验收通过。这些时间点之间的差距,可以解释等待时间;它本身不能证明文件损坏或应用程序故障。
实际用户报告了什么
在 2026 年 7 月的 Synology 讨论中,一位 rclone 1.74.3 用户将加密数据复制到挂载的 SMB 共享目录,报告进度到 100% 后仍停留一段时间。贴出的日志最终显示校验和一致、复制完成;后续回复则继续描述其他测试。
这是特定配置下的案例,可以作为排查线索,不能据此推断所有 Synology 或加密传输都有相同原因。用户后来关闭校验和检查的实验,改变了实际执行的工作,因此不能视为达到同等校验程度的成功交付。
另一则 2026 年 3 月的较早报告呈现相反现象:rclone 1.73.2/1.73.3 在成功的 S3 服务端复制期间一直显示 0%。维护者后来指出 beta 版已有修复。这是历史上的进度显示案例,不代表当前版本仍有同样问题。
两个案例都说明,百分比必须结合操作内容解读。下一步是查看数字背后正在执行的工作。
先找出尚未完成的阶段
文件传输可能包含数个无法用字节计数完整表示的操作:
- 读取并发送数据。 传输速度通常最容易反映这个阶段。
- 检查目标端。 校验可能比对服务器提供的哈希值,也可能重新读取文件内容。
- 完成目标端操作。 存储服务可能需要合并已上传的分片;客户端也可能仍在关闭文件或设置元数据。
- 验收交付。 接收者确认必要文件齐全、校验通过,而且预定使用的应用程序能正常打开。
不同实现中的阶段可能重叠。应以日志判断当前执行的是哪道操作,不要把所有停顿都归因于校验和计算。
Amazon S3 提供了一个具体例子。CompleteMultipartUpload 文档说明,最终处理可能耗时数分钟,而且初始 HTTP 200 之后的响应正文仍可能包含错误。因此要看客户端的最终结果,不能只看分片已上传或初始响应。
对本地或挂载路径,也要检查最后的元数据操作。rclone 本地后端文档说明,复制后会更新修改时间,而 CIFS 挂载可能遇到权限问题。时间戳错误与长时间读取内容,需要不同的排查方向。
用实际活动缩小原因范围
下表是排查框架,不代表每个应用程序都已确认存在这些问题。
| 观察到的现象 | 可能意味着什么 | 下一步检查 |
|---|---|---|
| 字节数已到 100%,完成文件数却没有增加 | 当前文件仍有操作未结束 | 最后一条日志、校验状态与目标端响应 |
| 上传停止后,发送端开始接收大量数据 | 可能正在回读目标端内容进行校验 | 进程与网络计数,以及后端的哈希计算方式 |
| 目标端磁盘或 CPU 仍持续忙碌 | 可能仍在计算哈希、写入或执行其他本地操作 | 占用资源的进程及其日志 |
| 分片上传的完成请求仍在等待 | 服务端可能还在做最终处理 | 最终 API/客户端结果与错误 |
| 权限或时间戳错误反复出现 | 元数据处理或重试行为 | 目标端所有者、权限与确切失败操作 |
| 没有活动、没有完成结果,且持续超时 | 可能是连接停滞或重试循环 | 超时与错误历史;重试前先保存日志 |
发送端流量低,无法单独区分正常的服务端操作与停滞。同样,目录里能看到文件,也不能证明文件已完整写入。应确认任务成功结束,并取得约定的校验结果。
如果整个传输过程都慢,而不只在最后停留,请先参考上传瓶颈排查指南。
哈希在哪里计算,会改变校验成本
校验和是从文件内容计算出的摘要。两端的值都已存在时,比对成本很低;获取摘要本身则可能需要再读一次整个文件。
挂载的 SMB 路径,对传输应用程序可能看起来像本地路径,但数据实际存储在另一台机器上。若校验会读取这条路径,数据就可能再次经过网络。必须确认实际后端与配置:rclone 原生 SMB 后端,与指向挂载共享目录的本地后端,是两条不同路径,不能假设哈希行为相同。
rclone 的 SFTP 后端可以通过获准执行的远程 shell 命令,在目标端计算哈希。这可以避免将目标端整个文件传回来,但仍会消耗目标端的读取带宽与 CPU。受限制的 SFTP 账号不一定允许执行这些命令。
只有符合现有访问策略时,才选择这种配置。为了缩短校验时间而授予广泛的 shell 访问权,是另一项运维决策。若要改善数据传送阶段,可参考 SFTP 性能指南。
将校验时间纳入估算
以下是计算示例,不是实测:一个十进制 100 GB 文件,以有效速率 100 MB/s 传送,接着以 40 MB/s 完整读取一次进行校验,两个阶段不重叠。
| 阶段 | 计算 | 时间 |
|---|---|---|
| 数据传送 | 100,000 MB / 100 MB/s | 16 分 40 秒 |
| 校验读取 | 100,000 MB / 40 MB/s | 41 分 40 秒 |
| 合计 | 1,000 + 2,500 秒 | 58 分 20 秒 |
此估算不包含文件枚举、其他读取、重试与最终处理。缓存读取、服务器直接提供哈希、阶段重叠或较慢的硬件,都会改变结果。它说明的是:只用数据传送的 ETA,可能严重低估交付剩余时间。
校验副本时,保留原本需要的检查
验收前,保持源数据不变。现有 rclone 配置应选择符合后端能力的校验方式:
- rclone check比对文件清单、大小与可用的兼容哈希。阅读输出,确认实际完成了哪些检查;只有大小一致,不能证明内容一致。
- rclone checksum使用已保存的 SUM 清单比对目标端;必要时,可以通过 download 选项读取远程内容后计算哈希。
- rclone cryptcheck用于加密远程存储的检查,底层存储必须支持哈希。规划时也要纳入读取与加密计算成本。
若无可用哈希,rclone check 的 --download 模式会读取内容进行比对。对大型远程数据集执行前,先估算额外网络流量与存储负载。
关闭校验和可能让进度更快结束,原因是少做了一项检查。如果要将传送与校验拆成不同的定时任务,应分别保存两者结果;校验尚未完成时,不应标记为已验收。
定义可用的完成条件
下次使用有代表性的数据交付时,记录三个时间:数据传送进度到终点、客户端报告成功,以及接收端完成校验。同时保存文件数、总字节数、错误与校验方式,每次测试只改一项配置。
摄影原始素材在完整性校验后,还要进行有代表性的打开或重新链接测试。远程素材交付指南说明了清单与验收流程。
如果最后的等待随文件大小与回读活动增加,应检查校验在哪里执行,以及该处的处理能力;若伴随明确错误,就处理该错误。这些观察能帮助你决定下一步,避免每次百分比停住就重新启动任务。