在 Linux 下误删文件还是有希望恢复的,但越早处理成功率越高。下面按常见场景和文件系统给你一套实用恢复思路。
✅ 立刻停止对该分区写入任何数据
✅ 尽量不要在当前系统盘直接恢复
df -T
# 或
mount | grep " / "
常见类型:
ext3 / ext4(最常见)xfsbtrfsvfat / ntfs(U 盘、Windows 分区)⚠️ 不同文件系统,恢复工具不一样
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/
testdisk(通用)支持 ext / xfs / fat / ntfs
sudo apt install testdisk
sudo testdisk
操作流程:
✅ 对误删目录结构支持很好
⚠️ xfs 没有原生 undelete 工具,恢复难度较大
xfsrestore -f backup_file /mount/point
sudo testdisk
⚠️ 成功率较低,尤其是删除时间较长时
# 查看快照
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 / 备份 |
| 任何系统 | 立即卸载分区 |
如果你愿意,可以告诉我:
我可以给你更具体的恢复命令和步骤。