linux误删文件可恢复的前提是数据未被覆盖;应立即停写、用 extundelete(ext3/4)或 photorec(通用)恢复,并通过安全别名、回收站和快照预防。

Linux 下误删文件后能否恢复,关键看文件是否被新数据覆盖。只要没写入新内容,多数情况能找回,但操作必须快、步骤要准。
立即停止写入操作
删除文件只是移除了目录项和 i node链接,数据块本身还留在磁盘上。一旦有新文件写入,就可能覆盖原位置,导致不可逆丢失。
- 立刻退出当前用户,避免 shell 历史记录或临时文件写入
- 不要运行 apt/yum 更新、日志轮转、数据库 自动备份等后台任务
- 如是系统盘,建议从 Live usb启动(如 ubuntu 安装盘),以只读方式挂载原分区
用 extundelete 恢复 ext3/ext4 文件
适用于使用 ext3 或 ext4 文件系统的场景,需在未卸载前尽快执行(或从 Live 环境挂载为只读后运行)。
- 安装命令:red”>sudo apt install extundelete(debian/Ubuntu)或sudo yum install extundelete(centos 7 及更早)
- 查看可恢复文件:sudo extundelete /dev/sda1 –inode 2(先查根目录 inode,再列出)
- 恢复单个文件:sudo extundelete /dev/sda1 –restore-file home/user/report.txt
- 恢复整个目录:sudo extundelete /dev/sda1 –restore-Directory home/user/docs
- 恢复结果默认存入 RECOVEred_FILES/ 目录,请确保目标分区有足够空闲空间
用 photorec 快速扫描恢复(不依赖文件系统)
当 extundelete 无效(如 XFS/Btrfs 格式、inode 已清空、分区被重新格式化),photorec 是更底层的救急方案。它按文件头特征识别数据,不重建路径,但成功率高。
- 安装:sudo apt install testdisk(photorec 包含在 testdisk 包中)
- 运行:sudo photorec,按提示选择磁盘→分区→文件系统类型→保存路径(务必选其他磁盘!)
- 支持识别超 400 种文件类型(pdf、JPG、DOCX、sql、源码等),恢复后文件名丢失,靠内容或扩展名识别
- 耗时较长,建议筛选目标类型(如只扫 *.log 或 *.py)加快速度
预防胜于抢救:日常该怎么做
恢复永远是下策。建立简单机制,能极大降低风险。
- 给 rm 加安全别名:alias rm=’rm -i’,删除前强制确认;进阶可用 safe-rm 工具 拦截危险路径
- 重要目录启用回收站逻辑:用 trash-cli 替代 rm,删除走~/.local/share/Trash/,支持还原
- 对关键数据配置定时快照(如 LVM 快照、btrfs snapshot、rsync+ 硬链接备份)
- 敏感操作前先 ls -i 记下 inode 号,万一出错可快速定位原始数据块