温馨提示×

centos extract怎么恢复数据

小樊
39
2026-01-08 01:24:44
栏目: 智能运维

CentOS 误删文件后的数据恢复实操指南

一、先判断你的场景与前提

  • 你很可能是把 extundelete 误写成了 extract。extundelete 适用于 ext3/ext4 文件系统,利用文件系统日志尝试找回被删除文件;若数据已被新写入覆盖或日志已被循环覆盖,成功率会显著下降。对 XFS/Btrfs 等文件系统,extundelete 不适用。若删除的是仍在被进程占用的文件,可先尝试通过 lsof | grep deleted 定位并拷贝恢复。为降低风险,操作前建议先对原盘或分区做只读镜像备份(如 dd),恢复结果务必写入到另一块磁盘/分区

二、最快路径 extundelete 恢复 ext3/ext4(推荐)

  • 准备环境(CentOS 7/8 示例)
    • 停止写入:对数据盘执行 umount /dev/sdXN;若是系统盘或无法卸载,先以只读方式重挂载:mount -o remount,ro /path
    • 安装依赖与编译:
      • yum install -y libcom_err e2fsprogs-devel gcc gcc-c++
      • 下载并编译(可用新版本 v1.0):
        • 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
  • 恢复操作(在 extundelete 源码目录的 src 下执行)
    • 查看可恢复文件与目录(以根目录 inode=2 为起点):
      • ./extundelete /dev/sdXN --inode 2
    • 按需要恢复:
      • 恢复单个文件:./extundelete /dev/sdXN --restore-file 路径/到/文件
      • 恢复目录:./extundelete /dev/sdXN --restore-directory 路径/到/目录
      • 恢复全部可恢复项:./extundelete /dev/sdXN --restore-all
    • 结果默认生成在同级目录的 RECOVERED_FILES/ 中,确保目标磁盘有足够空间。

三、其他常见场景与工具

  • 文件被进程占用(句柄未释放)
    • 查找被删除但仍被占用的文件:lsof | grep deleted
    • 若能看到文件描述符,可尝试从 /proc//fd/ 中拷贝恢复(例如 cp /proc//fd/ /recover/file)。
  • 非 ext3/ext4 或 extundelete 无效(如 XFS/Btrfs、分区被重写、inode 信息缺失)
    • 使用 PhotoRec(随 TestDisk 套件提供)按文件特征“雕刻”恢复:
      • yum install -y testdisk
      • photorec
      • 选择磁盘 → 分区 → 文件系统类型 → 指定保存路径(务必选其他磁盘!)
      • 注意:文件名与目录结构可能无法完整保留,恢复后需按扩展名/内容甄别。
  • 分区/引导损坏或系统无法启动,仅需“把数据拷出来”
    • 使用 LiveCD/LiveDVD 或救援模式启动,识别磁盘/卷组后挂载并拷贝:
      • LVM 场景:vgchange -ay 激活卷组,再挂载逻辑卷进行拷贝
      • 普通分区:直接只读挂载后 rsync/scp 到安全位置。

四、关键注意事项与成功率提升

  • 立刻停止对目标分区写入:卸载或只读挂载;删除后写入越少,成功率越高。
  • 优先把恢复结果写到另一块磁盘,避免“原地写回”造成覆盖。
  • 先做只读镜像再恢复:dd if=/dev/sdX of=/backup/img bs=4M,后续在镜像上演练与恢复。
  • 系统盘持续有业务写入时,extundelete 往往难以成功;必要时从 Live 环境只读挂载操作。
  • 预防胜于抢救:为 rm 设置安全别名(如 alias rm=‘rm -i’)、使用 trash-cli、对关键数据做快照/定时备份。

0