CentOS 误删除文件系统的恢复指南
一、先判断与准备
- 立刻停止对涉及分区的一切写入操作:停止相关服务、避免在该分区创建或下载文件,必要时直接卸载分区或将其以只读方式重新挂载,以降低被删除数据被覆盖的风险。
- 确认文件系统类型(不同文件系统恢复方法不同):执行命令:df -T 或 lsblk -f,记录目标分区的类型(如:ext4、xfs)与挂载点。
- 准备恢复环境:优先在另一块磁盘/外置盘上保存恢复结果,避免写回原盘;准备一台同版本的 CentOS 救援环境(LiveCD/救援模式)更有利于只读分析与恢复。
- 重要提示:恢复成功率取决于是否被新数据覆盖,越早操作成功率越高。
二、按文件系统类型选择恢复方案
| 文件系统 |
适用场景 |
核心工具 |
关键要点 |
| ext3/ext4 |
误删文件或目录、误格式化但分区未重写 |
extundelete |
需卸载分区后扫描;支持按文件、按目录或全盘恢复;恢复结果在本地目录 RECOVERED_FILES 中 |
| xfs |
有历史备份的场景 |
xfsdump/xfsrestore |
常规文件级工具对 XFS 删除恢复能力有限,优先依赖事先的 xfsdump 备份进行整盘/目录恢复 |
- 说明:extundelete 仅适用于 ext3/ext4;对 XFS 不建议依赖 extundelete,若无备份,恢复难度高、成功率低。
三、ext4 恢复步骤(extundelete)
- 安装工具(EPEL 源):
- 执行:yum install -y epel-release
- 执行:yum install -y extundelete
- 卸载目标分区:
- 执行:umount /dev/sdXN(将 sdXN 替换为实际分区,如 /dev/vdb1)
- 扫描可恢复文件:
- 执行:extundelete /dev/sdXN --inode 2(查看被删除文件的列表)
- 执行恢复:
- 恢复单个文件:extundelete /dev/sdXN --restore-file 路径/到/文件
- 恢复整个分区:extundelete /dev/sdXN --restore-all
- 恢复结果默认在当前工作目录的 RECOVERED_FILES/ 中
- 校验与回写:
- 使用 md5sum 对比原文件与恢复文件是否一致;确认无误后,将恢复数据拷贝到安全位置,再重新挂载分区为可写并恢复业务。
四、XFS 恢复步骤(xfsdump/xfsrestore)
- 事前有备份时的恢复:
- 安装工具:yum install -y xfsdump
- 恢复整盘/目录:xfsrestore -f /path/to/backup /restore/dir(将备份文件恢复到指定目录)
- 事前无备份的现实:
- 常规文件级工具对 XFS 删除恢复能力有限,建议立即停止写入并寻求专业数据恢复服务;后续务必建立定期 xfsdump 备份策略(如每周全备、每日增量)。
五、无法卸载时的只读应急与后续预防
- 只读应急:若分区正被占用无法卸载,可尝试将其只读重挂载:mount -o ro,remount /dev/sdXN /mount/point;若仍失败,优先停业务或进入救援模式操作。
- 预防措施:
- 建立安全的“回收站”机制(如为 rm 设置别名,将删除改为移动到回收站目录,定期清理),降低误删风险。
- 对关键数据制定并演练 备份/恢复 流程(XFS 使用 xfsdump/xfsrestore 定期全备与增量备)。