备份失败:空间、权限与日志排查

适用环境:Linux备份任务为主;适用于tar、数据库导出、定时脚本或rsync失败后的只读定位。不要在未核对恢复能力时清空历史备份。

失败时先保留命令、退出码、开始结束时间、备份目录和完整错误输出。停止把失败批次当成可用版本;若上一次好副本即将被自动覆盖,应先暂停对应任务或保留策略,再处理根因。

先分清哪一个文件系统满了

df -h /var/backups/baole /var/tmp
df -i /var/backups/baole /var/tmp
du -x -h --max-depth=1 /var/backups/baole | sort -h

路径替换为真实备份、临时目录和目标挂载点。df -h 看字节空间,df -i 看 inode:大量小文件可能让inode先耗尽。du -x 只统计当前文件系统内内容,输出不是跨挂载点的总容量。数据库导出或压缩工具可能使用其他临时路径,要根据日志核实,不能只检查网站所在盘。

按错误信息选择检查

典型错误 检查方向 处理顺序
No space left on device 目标字节空间、inode、临时目录以及存储配额 保留最近可恢复副本,先安排扩容或转移已校验批次,再处理失败产物。
Permission denied 源文件读取权限、目标创建权限和任务账号 用同一任务账号手工验证必要读写;修正具体权限,不放开整个业务目录。
Read-only file system 目标挂载状态或存储故障 保留系统与存储错误,确认故障后处理;不反复写入或盲目重挂载。
file changed as we read it 源数据仍在变化 建立一致性窗口或改用应用/数据库支持的备份方法,再重做。
连接断开或部分传输 SSH、网络与源批次完整性 确认源文件固定,再重传到指定批次,重新校验接收端。

不要先删除看起来很大的文件

  1. 列出每个备份批次的日期、是否完成、是否有异地校验、最近一次恢复验证结果。
  2. 保护至少一份已验证的好副本和必要恢复资料;确认备份保留要求后再选择可清理批次。
  3. 先把选定批次转移至有空间的独立位置并重新校验。单纯移动到同一文件系统的另一个目录不会释放这块盘的空间。
  4. 失败留下的 .partial 文件也要先确认所属任务已经结束、不是唯一数据,再按具体路径处理。本文不给通配符批量删除命令。

du与df差别明显时,还可能有已删除但仍被进程占用的文件、权限导致统计不全、文件系统元数据或快照占用等原因。应根据系统工具和实际文件系统继续核查,不直接结束数据库进程或删除未知日志文件。

修复后重新证明任务可用

  • 用与定时任务相同的账号和路径再执行一次,确认退出码和完整日志。
  • 为新批次生成校验值,并做试解压/数据库隔离导入。
  • 观察一次真实定时触发,核对日期和产物,避免只验证了手动执行。
  • 给目标剩余空间、最近成功时间和连续失败安排检查。容量告警阈值应留出至少下一次备份所需空间及增长余量。

如果问题涉及宝乐云提供的磁盘或实例资源,工单填写实例ID、时间、受影响挂载点和必要错误文本;需要展示输出时附脱敏截图。工单附件仅支持jpg、gif、jpeg、png图片,不直接上传SQL、压缩包或原始备份;确需原始文件时,先与支持人员核实安全接收方式。平台是否存在可用历史副本必须另行确认,不能把它当成默认恢复来源。