使用Extundelete恢复误删文件
约 550 字大约 2 分钟
2026-08-29
误删文件后如果没有备份,ext3/ext4 文件系统上可以尝试用 extundelete 从磁盘残留数据中恢复。能否成功取决于删除后磁盘被覆写的程度,时间就是一切。
第一时间做的事
立即停止向该分区写入任何数据:停止相关服务(网站、数据库、cron 备份任务)。
最好把分区重新挂载为只读,或直接卸载:
sudo umount /data # 无法卸载的(如根分区):sudo mount -o remount,ro /恢复的文件要保存到另一个分区/磁盘,写回原分区会覆盖待恢复数据。
安装
Debian / Ubuntu
sudo apt install extundelete -yCentOS 8+ / Rocky Linux
sudo dnf install epel-release -y
sudo dnf install extundelete -y查看可恢复的文件
以数据盘 /dev/vdb1(挂载点 /data,已卸载)为例:
sudo extundelete /dev/vdb1 --restore-file data/site/index.html --output-dir /root/rescue
# 恢复整个目录:
sudo extundelete /dev/vdb1 --restore-directory data/site --output-dir /root/rescue
# 尝试恢复删除时间之后的所有文件:
sudo extundelete /dev/vdb1 --restore-all --output-dir /root/rescue成功后在 /root/rescue/RECOVERED_FILES/ 中查看恢复结果,核对内容完整性。
恢复后
- 把文件复制回原位置,恢复属主与权限(
chown、chmod,参见Linux常用命令入门)。 - 重新挂载分区并启动服务。
- 梳理误删原因,建立备份:参见Cron定时任务与本地与实例间数据传输。
常见问题
提示无法恢复 / 恢复出来的文件是空的?
删除后分区仍有写入,数据块已被新数据覆写,物理上无法找回。这也是第一步"立刻只读"重要性的原因。
XFS 文件系统(CentOS 默认)能恢复吗?
extundelete 仅支持 ext3/ext4。XFS 删除后恢复非常困难,社区有 xfs_undelete 等工具但成功率有限——XFS 场景更依赖备份。
恢复比备份麻烦太多了,正确姿势是什么?
把本文当作最后手段。日常按备份思路建立自动化备份(数据库 + 网站目录异地保存),误删时直接还原,几秒解决。
