温馨提示×

centos怎样恢复误删的文件

小樊
43
2026-01-02 03:19:29
栏目: 智能运维

CentOS 误删文件的恢复步骤

一、紧急处置与准备

  • 立刻停止对目标分区的一切写入:暂停业务、数据库、日志轮转、包管理等,避免新数据覆盖已删除的数据块。
  • 将目标分区改为只读或卸载:优先执行 umount /dev/sdX;若提示 device is busy,用 fuser -v -m /mountpoint 查找占用进程并处理后再卸载;无法卸载时,尝试只读重挂载:mount -o ro,remount /mountpoint
  • 准备恢复环境:在目标分区之外的磁盘或网络存储上准备充足空闲空间,恢复结果务必写到其他磁盘,避免二次覆盖。
  • 如为系统盘且无法卸载,建议从Live USB启动,以只读方式挂载原分区后再进行恢复操作。
  • 先做一份当前磁盘/分区的快照或备份(如云盘快照、LVM 快照),以便操作失误时可回滚。

二、按文件系统和场景恢复

  • ext3/ext4 文件系统(优先方案:extundelete)
    1. 安装依赖与工具(以 extundelete 0.2.4 为例):
      yum install -y e2fsprogs-devel gcc gcc-c++
      wget https://github.com/curu/extundelete/archive/refs/tags/v1.0.tar.gz
      tar xf v1.0.tar.gz && cd extundelete-1.0 && ./configure && make
    2. 扫描与恢复:
      • 查看可恢复项:extundelete /dev/sdX --inode 2
      • 恢复单个文件:extundelete /dev/sdX --restore-file /path/to/file
      • 恢复目录:extundelete /dev/sdX --restore-directory /path/to/dir
      • 恢复全部:extundelete /dev/sdX --restore-all
        恢复结果默认在运行目录的 RECOVERED_FILES/ 中。
  • 文件仍被进程占用(Linux 句柄未释放)
    • lsof | grep deleted 找到仍打开已删文件的进程,记录其 PID 与文件路径;
    • 通过 /proc/<PID>/fd/<FD> 将内容复制出来(例如 cp /proc/<PID>/fd/3 /restore/file),或从该进程导出所需数据后再终止进程。
  • 非 ext3/ext4 或 extundelete 无效(如 XFS/Btrfs、元数据损坏、重格式化)
    • 使用 PhotoRec(随 TestDisk 提供):photorec → 选择磁盘/分区 → 选择文件系统类型 → 指定保存路径(务必选其他磁盘)→ 开始扫描;
    • 特点:按文件头特征识别,支持400+ 文件类型,但文件名与目录结构不保留,恢复后需按扩展名或内容甄别。
  • 旧版 ext2 场景(仅当确认为 ext2 时)
    • 可用 debugfslsdeldump 等命令按 inode 恢复,但 ext3/ext4 的日志机制与此不同,优先使用 extundelete。

三、常用命令速查表

场景 命令示例 关键点
只读重挂载 mount -o ro,remount /data 无法卸载时先只读,减少写入
卸载分区 umount /dev/sdb1 恢复前确保分区不被占用
查找占用进程 fuser -v -m /data 处理后再卸载或只读
安装 extundelete yum install -y e2fsprogs-devel gcc gcc-c++ && ./configure && make 需 e2fsprogs 开发库
扫描删除项 extundelete /dev/sdb1 --inode 2 从根目录 inode 开始
恢复单文件 extundelete /dev/sdb1 --restore-file home/user/file.txt 路径为原文件绝对路径
恢复目录 extundelete /dev/sdb1 --restore-directory home/user/docs 递归恢复
恢复全部 extundelete /dev/sdb1 --restore-all 结果在 RECOVERED_FILES/
句柄未释放 `lsof grep deleted`
PhotoRec photorec 文件名丢失、按类型恢复

四、成功率与注意事项

  • 能否恢复取决于:删除后是否被新数据覆盖、以及 ext3/ext4 的 journal 元数据是否仍可用;覆盖越多,成功率越低。
  • 恢复操作务必写到其他磁盘/分区,严禁把恢复结果写回原分区。
  • 系统盘且持续有写入的场景,恢复成功率显著下降;必要时从 Live USB 启动,减少系统进程干扰。
  • 恢复完成后,先核对关键文件完整性与权限,再恢复业务,并尽快建立定期备份/快照策略。

五、预防建议

  • rm 加安全别名:alias rm='rm -i',或使用 safe-rm 拦截危险路径;日常删除建议用 trash-cli(回收站机制)。
  • 关键目录启用定时快照(如 LVM snapshot、btrfs snapshot、rsync+硬链接),或使用云盘/异地备份。
  • 重要操作前记录关键文件的 inode 或校验值,必要时先备份;对线上变更先在测试环境验证。

0