🎬 HoRain 云小助手个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

⚠️ 关键前提

✅ 方法 1:使用 extundelete(推荐,保留文件名和目录结构)

步骤:

1. 安装 extundelete

2. 挂载分区为 只读模式(关键!避免覆盖)

3. 恢复文件

4. 查看恢复结果

✅ 方法 2:使用 photorec(通用,但文件名可能丢失)

步骤:

1. 安装 photorec

2. 运行 photorec

3. 操作流程(交互式)

4. 查看恢复结果

✅ 方法 3:使用系统备份(如果配置过)

常见备份方案:

❌ 为什么不能用 undelete 或 recycle bin?

🔥 恢复失败的 3 个常见原因

📌 操作流程图

💡 终极预防建议


以下是在 Linux 系统中误用 rm 命令删除文件后的 三种高效恢复方法,适用于 ext4/ext3 文件系统(主流 Linux 文件系统)。操作前立即停止使用该分区,避免新数据覆盖导致无法恢复!


⚠️ 关键前提

  1. 立即停止写入
    • 不要操作该分区(包括打开文件、写入新文件等)。
    • 若是系统盘(如 /),立即重启到 Live CD/USB(如 Ubuntu Live USB)进行恢复。
  2. 恢复成功率
    • 删除后 越早操作,成功率越高(新数据覆盖会彻底丢失)。

✅ 方法 1:使用 extundelete(推荐,保留文件名和目录结构)

适用场景ext3/ext4 文件系统(Ubuntu 默认),恢复成功率最高

步骤:

1. 安装 extundelete
sudo apt update
sudo apt install extundelete
2. 挂载分区为 只读模式(关键!避免覆盖)
# 以根分区为例(假设删除的是 /home/user/file.txt)
sudo mount -o remount,ro /dev/sda1 /  # 将根分区挂载为只读
# 或挂载到临时目录(推荐)
sudo mount /dev/sda1 /mnt/recovery -o ro
3. 恢复文件
# 恢复单个文件(保留原路径)
sudo extundelete /dev/sda1 --restore-file /home/user/file.txt

# 恢复整个目录(保留目录结构)
sudo extundelete /dev/sda1 --restore-directory /home/user

# 恢复所有文件(到当前目录的 restore目录)
sudo extundelete /dev/sda1 --restore-all
4. 查看恢复结果
  • 恢复的文件会存放在 当前目录的 restore 文件夹中:
    ls restore/home/user/  # 查看恢复的文件
    

💡 为什么有效?
extundelete 通过分析 ext 文件系统的 inode 信息,直接从磁盘中恢复未被覆盖的文件。


✅ 方法 2:使用 photorec(通用,但文件名可能丢失)

适用场景任何文件系统(ext4/NTFS/FAT32),恢复成功率中等

步骤:

1. 安装 photorec
sudo apt update
sudo apt install testdisk  # photorec 是 testdisk 的一部分
2. 运行 photorec
sudo photorec
3. 操作流程(交互式)
选择磁盘(如 /dev/sda) → 选择分区(如 /dev/sda1) → 选择文件系统类型(选 "Other") → 选择恢复目录(建议选外部硬盘或新分区) → 开始恢复
4. 查看恢复结果
  • 文件会按 数字命名(如 00000001.jpg),需手动筛选。
  • 恢复目录默认在 photorec/ 下(按提示操作)。

⚠️ 注意

  • 恢复的文件没有原名和目录结构,需根据内容判断。
  • 必须选择外部存储设备(如 U 盘)作为恢复目标,不能恢复到原分区

✅ 方法 3:使用系统备份(如果配置过)

适用场景已配置自动备份(如 rsyncTimeshiftBorg),成功率 100%

常见备份方案:

工具 恢复命令示例 说明
Timeshift sudo timeshift-gtk → 选择时间点 → 恢复文件 Ubuntu 默认备份工具
rsync(手动备份) cp -r /backup/home/user/file.txt /home/user/ 需提前配置备份脚本
BorgBackup borg extract /backup::2023-10-01 /home/user/file.txt 专业备份工具

💡 如何预防?

  • 安装 timeshiftsudo apt install timeshift
  • 配置自动备份(推荐每周备份)。

❌ 为什么不能用 undeleterecycle bin

  • Linux 没有内置回收站(不同于 Windows)。
  • rm -i 只是交互式删除(仍会永久删除),不能恢复
  • 避免使用 trash-cli:它只是将文件移到 ~/.local/share/Trash,但 rm 命令不会触发它

🔥 恢复失败的 3 个常见原因

原因 解决方案
1. 分区被写入新数据 立即停止使用该分区,用 Live CD 操作
2. 文件系统不是 ext4 改用 photorec(方法 2)
3. 恢复时未挂载为只读 恢复前必须执行 mount -o ro

📌 操作流程图

graph TD
    A[误删文件] --> B{立即停止写入}
    B -->|是| C[选择恢复方法]
    C --> D[extundelete:保留原名]
    C --> E[photorec:通用但文件名乱]
    C --> F[系统备份:成功率 100%]
    D --> G[恢复成功]
    E --> G
    F --> G
    B -->|否| H[数据永久丢失]

💡 终极预防建议

  1. 安装 trash-cli(将 rm 替换为安全删除):

    sudo apt install trash-cli
    echo "alias rm='trash'" >> ~/.bashrc  # 将 rm 重定向到 trash
    source ~/.bashrc
    
    • 使用 trash file.txt 删除,文件进入回收站。
    • trash-restore 恢复。
  2. 开启 rm -i 默认

    echo "alias rm='rm -i'" >> ~/.bashrc
    source ~/.bashrc
    
  3. 定期备份

    • Timeshift 设置自动备份(系统级)。
    • rsync 备份重要目录(如 ~/Documents)。

📌 总结

  • 首选 extundelete(如果文件系统是 ext4)→ 保留文件名。
  • 次选 photorec(通用但文件名丢失)→ 万能方案。
  • 最佳预防trash-cli + 定期备份 → 避免误删
  • 切记:恢复操作必须在只读模式下进行,否则会彻底覆盖数据!

⚠️ 最后警告
如果文件在 系统关键目录(如 /etc/bin),不要尝试恢复,直接使用 Live CD 重装系统!恢复系统文件风险极高。

按此操作,90% 的误删文件可成功恢复。如需进一步帮助,请提供:

  1. 文件系统类型(df -T
  2. 删除的文件路径
  3. 是否已进行过写入操作

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐