温馨提示×

Ubuntu文件管理中如何恢复误删除的文件

小樊
56
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(选择磁盘/分区、勾选文件类型、设置保存路径)
  • 其他工具:如 foremostsudo apt-get install foremostsudo foremost -i /dev/sdX -o /output/dir)。

四、无法进入系统时的处理

  • 使用 Ubuntu Live USB 启动,挂载一个与丢失数据所在磁盘不同的目标盘用于保存恢复结果,然后按第三部分方法执行恢复(避免对原盘写入)。

五、成功率与预防建议

  • 成功率受删除后的写入量时间磁盘使用情况影响,越早恢复越好;无法保证 100% 成功。
  • 预防措施:
    • 定期备份(如 rsync/tar、Bacula/Amanda、云备份)。
    • 为 rm 设置安全别名或改用移动到“回收站”的脚本,降低误删风险。
    • 重要操作前先卸载目标分区或切换到只读挂载。

0