在 Linux 下误删文件(如 rm 删除)后,能否恢复取决于文件系统类型、删除后是否有写入操作、是否及时采取措施。下面按「紧急处理 → 恢复方法 → 预防措施」说明。
umount /mnt/xxx
extundelete(最常用)# 安装
yum install extundelete
# 或
apt install extundelete
# 恢复单个文件
extundelete /dev/sda1 --restore-file /home/user/test.txt
# 恢复整个目录
extundelete /dev/sda1 --restore-directory /home/user/docs
# 恢复所有删除文件
extundelete /dev/sda1 --restore-all
恢复后的文件在:
RECOVERED_FILES/
⚠️ 条件:
ext4magicext4magic /dev/sda1 -r
比 extundelete 在某些情况下更强。
可尝试:
xfs_undelete(社区工具,有限)testdisk / photorecapt install testdisk
testdisk
或
photorec
特点:
适合:
如果文件被程序打开,但被 rm:
lsof | grep deleted
找到类似:
java 1234 user 5w REG 8,1 123456 /home/user/a.log (deleted)
恢复:
cp /proc/1234/fd/5 /home/user/a.log
✅ 这是成功率最高的情况
rm -rflvcreate --snapshot --name snap --size 1G /dev/vg00/lv01
btrfs subvolume snapshot /
trash 代替 rmapt install trash-cli
alias rm='trash-put'
rm 加确认alias rm='rm -i'
| 情况 | 恢复可能 |
|---|---|
| 文件被进程占用 | ✅ 很高 |
| 刚删,无写入 | ✅ 高 |
| 删除很久,有写入 | ❌ 低 |
| xfs 无备份 | ❌ 极低 |
| 有快照/备份 | ✅ 100% |
如果你愿意,可以告诉我:
df -T)rm / rm -rf)我可以给你具体可执行的恢复命令。