在 Linux 中“恢复删除文件”能否成功,关键取决于文件被删除的方式、文件系统类型以及是否有新数据写入。下面按常见场景 + 可行方案详细说明。
rm / rm -rf:数据不一定立刻消失,只是 inode 被释放shred、wipe:数据已被覆盖,基本无法恢复extundelete(推荐)适用于 ext3 / ext4,成功率较高。
sudo umount /dev/sdXn
# 或
sudo mount -o remount,ro /mount/point
sudo apt install extundelete # Debian/Ubuntu
sudo yum install extundelete # CentOS/RHEL
sudo extundelete /dev/sdXn --restore-directory /path/to/dir
或恢复全部:
sudo extundelete /dev/sdXn --restore-all
恢复后的文件会保存在当前目录的 RECOVERED_FILES/ 中。
testdisk(通用、图形化)支持 ext / xfs / ntfs / fat 等。
sudo apt install testdisk
sudo testdisk
操作步骤:
[Advanced] → [Undelete]✅ 优点:可视化、成功率高
❌ 缺点:操作稍复杂
foremost(按文件类型恢复)即便文件名丢失,也能按文件头恢复(jpg、pdf、zip 等)。
sudo apt install foremost
sudo foremost -t jpg,png,pdf -i /dev/sdXn -o /recovery
⚠️ 恢复目录必须在不同磁盘
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 后继续大量写入shred、dd、wipe| 场景 | 推荐方案 |
|---|---|
| rm 删除 + ext4 | extundelete |
| 文件仍被程序占用 | /proc |
| 多文件系统 | testdisk |
| 按文件类型恢复 | foremost |
| 误格式化 | testdisk |
alias rm='rm -i'
或安装 trash-cli:
sudo apt install trash-cli
trash-put file
如果你愿意,可以告诉我:
df -T)我可以给你针对性恢复命令。