在Linux系统中,文件被误删之后并不是立刻从磁盘上消失,系统一般只是把索引节点标记为空闲。只要对应的数据块没有被新数据覆盖,我们就有可能通过一些工具和技巧把文件找回来。不同类型文件系统、不同删除方式对应的恢复方法也有差别。

恢复前的重要原则
发现误删文件后,第一件事是尽量减少对磁盘的写入。不要往同一分区保存新文件、不要运行会产生大量临时文件的程序。如果是系统盘,最好卸载分区或者以只读方式挂载,再用另一块盘里的工具去做恢复。
使用extundelete恢复ext文件系统文件
extundelete专门针对ext3和ext4文件系统,能够扫描分区日志并恢复被删除的文件。假设误删发生在/dev/sdb1这个ext4分区,可以先以只读方式挂载,然后执行恢复命令。
# 以只读方式挂载分区 sudo mount -o ro /dev/sdb1 /mnt/recover # 安装extundelete sudo apt-get install extundelete # 恢复全部被删除文件到当前目录的RECOVERED_FILES sudo extundelete /dev/sdb1 --restore-all
如果只想恢复某个具体路径,可以使用--restore-file参数指定文件相对路径。
使用testdisk修复分区与恢复文件
testdisk是一个强大的开源工具,不仅能恢复误删分区,也能在分区表损坏时帮忙找回数据。它提供交互式界面,操作逻辑清晰。
# 安装testdisk sudo apt-get install testdisk # 启动工具并选择磁盘 sudo testdisk /dev/sdb
进入程序后,依次选择磁盘、分区表类型,再使用Analyse功能扫描丢失分区,最后通过List把需要文件复制出来。
其他可用工具简表
| 工具名称 | 适用场景 | 特点 |
|---|---|---|
| photorec | 按文件签名恢复多种格式 | 不依赖文件系统,适合严重损坏盘 |
| ddrescue | 磁盘物理损坏复制 | 可跳过坏道镜像磁盘 |
| debugfs | ext文件系统手动查看 | 命令复杂但无需额外安装 |
日常防范建议
- 重要数据定期备份到异地或独立磁盘
- 使用
rm命令时开启别名确认,例如alias rm='rm -i' - 对关键目录设置权限,避免误执行删除脚本
数据恢复不是百分百成功,越早上手、越少写入,机会才越大。
Linux数据恢复extundeletetestdisk修改时间:2026-07-28 02:51:17