HoRain云--Linux误删文件?3招高效恢复秘籍
摘要:本文介绍了Linux系统中误删文件的3种恢复方法:1)extundelete(推荐,适用于ext3/ext4文件系统,保留文件名和目录结构);2)photorec(通用但会丢失文件名);3)系统备份恢复。关键前提是立即停止写入操作,避免数据覆盖。文章还分析了恢复失败原因,提供了预防建议(如安装trash-cli、定期备份),并强调恢复操作必须在只读模式下进行。最后警告系统关键目录文件恢复风险

🎬 HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录
✅ 方法 1:使用 extundelete(推荐,保留文件名和目录结构)
✅ 方法 2:使用 photorec(通用,但文件名可能丢失)
❌ 为什么不能用 undelete 或 recycle bin?

以下是在 Linux 系统中误用 rm 命令删除文件后的 三种高效恢复方法,适用于 ext4/ext3 文件系统(主流 Linux 文件系统)。操作前立即停止使用该分区,避免新数据覆盖导致无法恢复!
⚠️ 关键前提
- 立即停止写入:
- 不要操作该分区(包括打开文件、写入新文件等)。
- 若是系统盘(如
/),立即重启到 Live CD/USB(如 Ubuntu Live USB)进行恢复。
- 恢复成功率:
- 删除后 越早操作,成功率越高(新数据覆盖会彻底丢失)。
✅ 方法 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:使用系统备份(如果配置过)
适用场景:已配置自动备份(如 rsync、Timeshift、Borg),成功率 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 |
专业备份工具 |
💡 如何预防?
- 安装
timeshift:sudo apt install timeshift- 配置自动备份(推荐每周备份)。
❌ 为什么不能用 undelete 或 recycle 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[数据永久丢失]
💡 终极预防建议
-
安装
trash-cli(将rm替换为安全删除):sudo apt install trash-cli echo "alias rm='trash'" >> ~/.bashrc # 将 rm 重定向到 trash source ~/.bashrc- 使用
trash file.txt删除,文件进入回收站。 - 用
trash-restore恢复。
- 使用
-
开启
rm -i默认:echo "alias rm='rm -i'" >> ~/.bashrc source ~/.bashrc -
定期备份:
- 用
Timeshift设置自动备份(系统级)。 - 用
rsync备份重要目录(如~/Documents)。
- 用
📌 总结:
- 首选
extundelete(如果文件系统是 ext4)→ 保留文件名。- 次选
photorec(通用但文件名丢失)→ 万能方案。- 最佳预防:
trash-cli+ 定期备份 → 避免误删。- 切记:恢复操作必须在只读模式下进行,否则会彻底覆盖数据!
⚠️ 最后警告:
如果文件在 系统关键目录(如/etc、/bin),不要尝试恢复,直接使用 Live CD 重装系统!恢复系统文件风险极高。
按此操作,90% 的误删文件可成功恢复。如需进一步帮助,请提供:
- 文件系统类型(
df -T) - 删除的文件路径
- 是否已进行过写入操作
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐




所有评论(0)