Ubuntu文件管理中如何恢复误删除的文件
小樊
35
2025-11-17 05:09:16
Ubuntu误删文件的恢复指南
一、先判断属于哪类删除
- 回收站未清空:优先从回收站直接还原,成功率最高。
- 回收站已清空或命令行 rm 删除:需立即停止对原磁盘写入,按文件系统选择工具恢复(如 ext3/ext4 → extundelete/debugfs;跨文件系统或分区损坏 → TestDisk/PhotoRec)。
- 系统无法启动或分区不可挂载:用 Live USB 启动后再执行恢复操作。
二、回收站未清空时的恢复
- 图形界面:打开文件管理器(如 Nautilus),进入左侧 Trash/回收站,右键目标文件选择 恢复,将回到原路径。
- 命令行工具 trash-cli(推荐):
- 安装:
sudo apt-get install trash-cli
- 列出:
trash-list
- 交互还原:
trash-restore(可按序号选择);批量还原:trash-restore -r
- 清空回收站:
trash-empty
- 手动方式:回收站文件通常位于用户目录的 ~/.local/share/Trash/files,可用
find/cp 将所需文件复制回原位置。
三、命令行 rm 删除或回收站已清空时的恢复
- 立即停止写入并确认分区:
- 查看分区与文件系统:
df -Th
- 示例:误删文件所在分区为 /dev/sda1
- ext3/ext4 文件系统(优先尝试 extundelete):
- 安装:
sudo apt-get install extundelete
- 恢复全部:
sudo extundelete /dev/sda1 --restore-all(恢复结果在 RECOVERED_FILES/)
- 恢复指定文件:
sudo extundelete /dev/sda1 --restore-file /path/to/file
- 按 inode 恢复:
sudo extundelete /dev/sda1 --restore-inode <inode>
- 底层调试术 debugfs(ext2/ext3/ext4):
- 进入:
sudo debugfs /dev/sda1
- 列出已删项:
lsdel
- 查看信息:
stat <inode>
- 导出数据块:
dump <inode> /path/to/save/file
- 跨文件系统或分区损坏(TestDisk/PhotoRec):
- 安装:
sudo apt-get install testdisk
- 分区与引导恢复:
sudo testdisk
- 文件数据恢复:
sudo photorec(选择磁盘/分区、勾选文件类型、设置保存路径)
- 其他工具:如 foremost(
sudo apt-get install foremost,sudo foremost -i /dev/sdX -o /output/dir)。
四、无法进入系统时的处理
- 使用 Ubuntu Live USB 启动,挂载一个与丢失数据所在磁盘不同的目标盘用于保存恢复结果,然后按第三部分方法执行恢复(避免对原盘写入)。
五、成功率与预防建议
- 成功率受删除后的写入量、时间与磁盘使用情况影响,越早恢复越好;无法保证 100% 成功。
- 预防措施:
- 定期备份(如 rsync/tar、Bacula/Amanda、云备份)。
- 为 rm 设置安全别名或改用移动到“回收站”的脚本,降低误删风险。
- 重要操作前先卸载目标分区或切换到只读挂载。