科技 · 实用指南
rsync 提示“file has vanished”?忽略退出码 24 前先证明源端变动
保留全部消失路径,确认由哪个进程创建或删除,再对同一源或稳定快照复跑;只有明确的临时文件策略才可把 24 降级。

退出码 24 的含义很具体:源文件在传输期间消失,rsync 因而只完成部分传输。实时目录里这可能正常,但这个数字不能证明缺失路径无关紧要。
安全顺序是先留证、再定策略:保存 stderr 与退出状态,分类路径,对同一源或时间点稳定源复跑,然后决定修复、排除,或仅对 24 做窄幅降级。
过滤前先保存本次运行
让现有任务把 stderr 写入带日期日志,并立即保存 shell 状态。记录命令、源根、目标、两端版本,以及源是本地、NFS、daemon 模块还是快照。不要先接 grep;若包装器未正确处理,管道可能覆盖 rsync 状态。
把每条“file has vanished”路径另存清单,但保留原日志。统计并按父目录分组:一个轮换锁文件、数百个用户文档和整棵 NFS 子树不能使用同一处置。
按所有者与价值分类路径
确认哪个进程创建、重命名或删除路径,并判断它是权威数据、可重建缓存、临时锁、收件队列还是未知。“.lock”只是线索,不是证据;必须写明应用为何允许丢弃。
复跑后检查普通文件是否仍在源端。若大量稳定路径在固定时间后消失,先核挂载、权限、源身份和远端服务健康,再动排除规则。
用稳定边界复跑
在可行范围内让源安静并复跑同一命令。重要路径重复出现时,不再视为随机。对持续变化的文件系统,使用适当的时间点快照或应用一致性导出。
文件系统快照保留块级时间点,但应用可能仍需 flush、dump 或专用快照。监控容量;Red Hat 文档说明写时复制快照写满会失效。快照本身也不是独立备份。
在修复、排除与窄包装之间选择
重要或未知路径消失时修复源路径、挂载或应用流程。只有内容明确可重建且排除已记录,才排除目录;数据库、邮件和任务队列优先使用应用支持的导出或不可变交接目录。
官方 FAQ 的包装器只把 24 改为 0,并保留其他状态。只有路径审计证明剩余集合符合策略时才用;不要把全部非零状态都变成功,也不要删日志证据。
用两遍验收收口
最终任务跑两遍:正常排程一次,稳定源或快照一次。记录传输总量、消失路径、退出状态及实际采用的目标验证。临时路径应数量少、名称类别明确且稳定。
验收规则要写死:0 通过;24 只有在清单完整、全属批准类别且无其他诊断时通过;未知路径、重复普通数据、坏快照、不可访问挂载或其他错误仍判失败。
