温馨提示×

怎样恢复linux 误删文件

小樊
39
2026-08-13 16:09:06
栏目: 智能运维

在 Linux 下误删文件还是有希望恢复的,但越早处理成功率越高。下面按常见场景和文件系统给你一套实用恢复思路。


一、第一时间要做的(非常重要)

立刻停止对该分区写入任何数据

  • 不要再保存、安装、下载、编译文件
  • 如果是服务器,尽量卸载分区或只读挂载

尽量不要在当前系统盘直接恢复

  • 最好把磁盘挂载到另一台 Linux 机器
  • 或用 Live CD / Live USB

二、判断文件系统类型

df -T
# 或
mount | grep " / "

常见类型:

  • ext3 / ext4(最常见)
  • xfs
  • btrfs
  • vfat / ntfs(U 盘、Windows 分区)

⚠️ 不同文件系统,恢复工具不一样


三、Ext3 / Ext4 文件恢复(最常用)

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

适用:ext3 / ext4

安装

# Ubuntu / Debian
sudo apt install extundelete

# CentOS / Rocky
sudo yum install extundelete

恢复整个目录

sudo extundelete /dev/sda1 --restore-directory /home/user/doc

恢复所有文件

sudo extundelete /dev/sda1 --restore-all

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


✅ 方法 2:使用 testdisk(通用)

支持 ext / xfs / fat / ntfs

安装

sudo apt install testdisk

运行

sudo testdisk

操作流程:

  1. 选择磁盘
  2. 选择分区类型
  3. Analyse → Quick Search
  4. 找到被删除文件
  5. 复制到别的分区

对误删目录结构支持很好


四、XFS 文件系统恢复

⚠️ xfs 没有原生 undelete 工具,恢复难度较大

方法 1:xfsdump 备份恢复(如果你有备份)

xfsrestore -f backup_file /mount/point

方法 2:testdisk(尝试)

sudo testdisk

⚠️ 成功率较低,尤其是删除时间较长时


五、Btrfs 文件系统(比较简单)

# 查看快照
sudo btrfs subvolume list /

# 从快照恢复
cp -a .snapshots/xx/restore/path /path

✅ btrfs 最好的恢复方式是快照


六、没有工具的“野路子”(不推荐但可试)

如果只是删了一个文本文件,且内容还在内存中:

  • grep 扫描磁盘(非常慢)
sudo grep -a -C 5 "关键词" /dev/sda1 > result.txt

七、恢复失败的常见原因

❌ 文件被覆盖
❌ 使用的分区还在频繁写入
❌ 删除时间太久
❌ SSD + TRIM 开启(数据真的消失了)


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

alias rm='rm -i'

或安装 trash-cli

sudo apt install trash-cli

使用:

trash file.txt
trash-list
trash-restore

九、快速决策表

场景 推荐方案
ext4 刚误删 extundelete
多种文件系统 testdisk
btrfs 快照
xfs testdisk / 备份
任何系统 立即卸载分区

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

  • ✅ 文件系统类型
  • ✅ 是否被删文件是文本 / 数据库 / 图片
  • ✅ 是否在系统盘
  • ✅ 是否还有写入

我可以给你更具体的恢复命令和步骤

0