linux下如何恢复rm命令删除的文件
linux下如何恢复rm命令删除的文件详细介绍
在 Linux 下通过 rm 命令删除文件后,能否恢复取决于文件是否被覆盖。以下是分场景的恢复方案,建议操作前立即停止对目标磁盘的写入(避免数据被覆盖):
一、基础检查:是否进入回收站?
图形化桌面环境(如 GNOME/KDE) 删除的文件可能暂存于回收站:
bash
~/.local/share/Trash/files/
~/.local/share/Trash/files/被删除的文件名 目标路径
注意:终端直接执行 rm(非图形界面删除)默认不会进回收站。
二、文件系统级恢复(适用于 ext3/ext4)
1. 使用
extundelete(需提前安装)
bash
extundelete
extundelete /dev/sda1 --list-deleted
extundelete /dev/sda1 --restore-inode --restore-path ./恢复目录
2. 用
debugfs 手动提取(适合无工具场景)
bash
ro /dev/sda1 /mnt
debugfs /dev/sda1
debugfs: lsdel
debugfs: logdump
debugfs: dump 被删除文件的inode号 恢复后的路径/test.txt
三、通用工具:TestDisk(推荐)
bash
testdisk
testdisk
四、数据恢复注意事项
- 立即停止写入:删除后继续使用磁盘会极大降低恢复成功率。
- 使用 Live CD:从 U 盘启动系统(如 Ubuntu Live)操作,避免覆盖本地磁盘数据。
- 慎用工具:
extundelete对 ext4 支持有限,新文件系统(如 btrfs)需用专用工具(如btrfs restore)。 - 备份优先:重要文件建议通过
rsync、borgbackup等工具定期备份。
五、预防措施(比恢复更重要)
- 别名保护:在
~/.bashrc中添加alias rm='rm -i'(交互式删除)。 - 回收站脚本:自定义
rm别名,将文件移动到回收站(示例脚本)。 - 版本控制:对代码 / 文档使用 Git,误删可通过
git checkout回滚。
若文件已被覆盖或磁盘已格式化,恢复几乎不可能。建议根据场景选择对应方案,优先尝试 TestDisk(兼容性强)或 图形化工具 Photorec(TestDisk 内置)。