温馨提示×

怎样恢复Linux删除文件

小樊
35
2026-07-14 18:33:58
栏目: 智能运维

在 Linux 中“恢复删除文件”能否成功,关键取决于文件被删除的方式、文件系统类型以及是否有新数据写入。下面按常见场景 + 可行方案详细说明。


一、先确认几点(非常重要)

  1. 是否彻底删除?
    • rm / rm -rf:数据不一定立刻消失,只是 inode 被释放
    • shredwipe:数据已被覆盖,基本无法恢复
  2. 文件系统类型
    • ✅ ext3 / ext4:有恢复可能
    • ✅ xfs:难度较大,但仍可尝试
    • ⚠️ btrfs / zfs:机制不同,恢复方式不同
  3. 是否继续写入该磁盘?
    • ❌ 不要再往该分区写任何数据(包括日志、安装软件)

二、最常用恢复方式(ext3 / ext4)

✅ 方法 1:使用 extundelete(推荐)

适用于 ext3 / ext4,成功率较高。

1️⃣ 立即卸载分区(或只读挂载)

sudo umount /dev/sdXn
# 或
sudo mount -o remount,ro /mount/point

2️⃣ 安装 extundelete

sudo apt install extundelete   # Debian/Ubuntu
sudo yum install extundelete   # CentOS/RHEL

3️⃣ 查看可恢复文件

sudo extundelete /dev/sdXn --restore-directory /path/to/dir

或恢复全部:

sudo extundelete /dev/sdXn --restore-all

恢复后的文件会保存在当前目录的 RECOVERED_FILES/ 中。


✅ 方法 2:使用 testdisk(通用、图形化)

支持 ext / xfs / ntfs / fat 等。

sudo apt install testdisk
sudo testdisk

操作步骤:

  1. 选择磁盘
  2. 选择分区表类型(通常默认)
  3. 选择 [Advanced][Undelete]
  4. 找到被删除的文件
  5. 复制到其他磁盘

✅ 优点:可视化、成功率高
❌ 缺点:操作稍复杂


✅ 方法 3:使用 foremost(按文件类型恢复)

即便文件名丢失,也能按文件头恢复(jpg、pdf、zip 等)。

sudo apt install foremost
sudo foremost -t jpg,png,pdf -i /dev/sdXn -o /recovery

⚠️ 恢复目录必须在不同磁盘


三、XFS 文件系统恢复

✅ 方法:xfs_undelete(成功率有限)

git clone https://github.com/ianka/xfs_undelete
cd xfs_undelete
./xfs_undelete /dev/sdXn

⚠️ XFS 删除后元数据清除较快,成功率低于 ext4


四、只是“删除后进程仍占用”(最常见)

✅ 方法:从 /proc 恢复(无需工具)

lsof | grep deleted

找到类似:

nginx  1234  user  5w  REG  /var/log/nginx.log (deleted)

恢复:

cp /proc/1234/fd/5 /tmp/recovered.log

这是最快、最稳的恢复方式


五、不可恢复的情况(请避免)

  • rm 后继续大量写入
  • 使用 shredddwipe
  • SSD 已执行 TRIM
  • 文件系统已重建或格式化

六、恢复优先级总结

场景 推荐方案
rm 删除 + ext4 extundelete
文件仍被程序占用 /proc
多文件系统 testdisk
按文件类型恢复 foremost
误格式化 testdisk

七、防止再次误删(强烈建议)

alias rm='rm -i'

或安装 trash-cli

sudo apt install trash-cli
trash-put file

如果你愿意,可以告诉我:

  • 文件系统类型(df -T
  • 删除方式(rm / 格式化 / 其他)
  • 是否为服务器/生产环境

我可以给你针对性恢复命令

0