技术答疑 · 实用指南
rsync退出码24:忽略警告前先核对消失的文件
退出码24表示传输期间源文件消失。先保留路径和原始状态、判断文件是否重要,再核验稳定来源上的重跑结果,最后才改变自动化策略。包装脚本不能把遗漏文件变成完整备份。

rsync退出码24表示因源文件消失而发生部分传输;退出码23则表示其他错误导致的部分传输,两者不同。文件被发现后消失可能是正常的实时变化,但状态本身不能说明漏掉的是临时锁文件,还是重要数据的唯一副本。
1. 过滤警告前先保留本次运行
保存标准输出和错误输出、时间、两端rsync版本、准确源和目标根目录、末尾斜杠约定、过滤及删除选项。rsync返回后立即获取它的实际退出状态;之后的命令或管道可能让你取得日志工具的状态。把消失路径清单与备份标识放在一起。
下一次受控尝试可用--itemize-changes查看计划或实际文件变更,以--log-file=FILE保留传输活动,但不能假设活动日志替代完整错误输出。先选一个消失路径:它被删除、改名、无法访问,还是从源的另一视图仍能看到?不要用宽泛警告过滤器抹掉唯一有用证据。
2. 判断哪些遗漏能够接受
询问应用或数据负责人这些路径包含什么。已知可丢弃锁文件或临时文件可能不在备份目标内;邮件、文档或关键应用状态不会因为目录繁忙就变得可丢弃。只有明确允许遗漏时,才记录范围狭窄、经过审核的排除规则。排除所有tmp目录或锁文件后缀可能掩盖真实需求。
2023年Back In Time问题记录展示了一次因rsync返回24而取消的真实快照;维护者表示已合并将24记为信息、其他错误仍视为错误的修改。这是产品策略,不证明所有用户的遗漏都无害。若稳定的重要路径反复消失,或伴随挂载与I/O错误,先调查来源,不要直接改状态。
3. 在可以核验的来源上重跑
重复带删除选项的命令前,使用相同、已审核的根目录与过滤规则,加上--dry-run --itemize-changes检查计划变更,尤其是删除。试运行不复制文件,也不修复之前的遗漏。通过计划的静默窗口或应用支持的快照流程减少源变化;对实时变化应用执行rsync,本身不是时点一致的备份。
完成获准的实际重跑后,比较所需内容,记录每个重要消失路径的结果。默认快速检查比较大小与修改时间;--checksum按内容校验和选择更新,代价是读取文件数据。它不能稳定变化来源,也不同于rsync对已传输文件的正常重建检查。验证有代表性的还原内容或应用规定的还原测试,不要只看状态为零。
4. 只修改已经证实合理的策略
官方FAQ的包装脚本仅把24映射为0,并保留其他状态。只有记录了预期遗漏及可接受备份结果后才采用,并在日志或监控中保留原始24。不要用|| true把所有失败改成成功。若关键遗漏仍无法解释,即使包装脚本返回零,这次运行对你的目标仍不完整。
两个名称相似的选项做的是别的事:--ignore-missing-args忽略首次查找时不存在的明确源参数;手册明确说它不忽略先找到、后消失的文件。--ignore-errors让--delete在出现I/O错误时继续删除,二者都不会恢复遗漏文件。完成意味着所需数据存在且可用、遗漏均有解释、其他失败仍可见,而不只是警告消失。
