温馨提示×

CentOS能找回删除文件吗

小樊
39
2026-08-04 07:13:54
栏目: 智能运维

CentOS 下有可能找回被删除的文件,但成功率取决于删除后的操作。下面按常见场景给你一个实用说明。


一、先说结论(重点)

刚删除、磁盘没被大量写入 → 有很大机会恢复
删除很久、磁盘大量写入 → 很难或无法恢复

Linux(包括 CentOS)删除文件时:

  • 只是删除了目录项(inode 链接)
  • 数据块不一定立刻被覆盖
  • 一旦数据块被新数据覆盖,基本无法恢复

二、常见恢复方式

✅ 方法 1:extundelete(最常用,适用于 ext3/ext4)

如果你的分区是 ext4(CentOS 默认),这是首选。

1️⃣ 卸载分区(非常重要)

umount /dev/sdXn
# 或
umount /mount/point

⚠️ 如果删的是系统盘,建议用 Live CD / 救援模式

2️⃣ 安装 extundelete

yum install e2fsprogs-devel gcc -y
wget https://extundelete.sourceforge.net/extundelete-0.2.4.tar.bz2
tar xjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make
make install

3️⃣ 查看可恢复文件

extundelete /dev/sdXn --inode 2

4️⃣ 恢复文件

extundelete /dev/sdXn --restore-all

恢复的文件会放在当前目录的 RECOVERED_FILES/


✅ 方法 2:testdisk / photorec(通用,支持多种文件系统)

适合:

  • 分区损坏
  • 误删分区
  • 文件类型多(图片、文档、压缩包等)
yum install testdisk -y
photorec

特点:

  • ✅ 不需要 inode
  • ❌ 文件名会丢失
  • ❌ 大文件可能不完整

✅ 方法 3:debugfs(高手向)

debugfs -w /dev/sdXn
lsdel

适合:

  • 找回刚删除、还没被清空的 inode
  • 操作复杂,风险高

三、如果是这些场景,基本救不回来

❌ 删除后:

  • 又写入了大量新文件
  • 做了 yum install / docker build / 编译
  • 删除的是 SSD + TRIM 已触发

❌ 使用:

  • XFS(恢复难度远高于 ext4)
  • LVM 快照被覆盖

四、紧急操作建议(现在立刻做)

  1. 停止写入磁盘
  2. 不要再执行:
    • cp / mv / tar / yum
  3. 如果是系统盘:
    • CentOS Live CD / 救援模式
  4. 先对磁盘做镜像(专业做法):
    dd if=/dev/sdX of=/mnt/external/disk.img bs=4M
    

五、预防建议(以后少踩坑)

✅ 开启备份

  • rsync
  • cron + tar
  • timeshift(服务器不推荐)

✅ 使用回收站机制

alias rm='trash-put'
yum install trash-cli -y

✅ 重要数据用 Git / 对象存储


六、我可以进一步帮你

你可以直接告诉我:

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. 文件系统(df -T
  3. 删除多久了
  4. 是系统盘还是数据盘
  5. 文件类型(文档 / 数据库 / 代码)

我可以给你最合适、最安全的恢复方案,甚至一步步带你操作。

0