不小心删了重大文件?别慌——按步骤操作,越快越有希望把文件救回。本文覆盖 Windows 与 Linux 常见文件系统(NTFS、FAT、ext4 等),并给出零敲碎打的实操步骤与命令,适合开发/运维/普通用户。
重大原则:立即停止在目标盘写入数据(包括保存、安装、浏览下载),否则已删除的数据空间会被覆盖,难以恢复。
一、救援前的准备(通用必须做的事)
- 停用写入:删文件的分区立刻停止任何写入操作。
- 用另一台机器或外接盘操作恢复:在另一台电脑上做恢复或先把整盘做镜像(推荐)。
- 制作磁盘镜像(强烈推荐) — 后来所有恢复都对镜像操作,原盘保留原样。
- Linux 下示例(把 /dev/sdb 做镜像到 /mnt/rescue/image.img):
sudo dd if=/dev/sdb of=/mnt/rescue/image.img bs=4M conv=sync,noerror status=progress
- conv=sync,noerror:跳过错误并保持对齐;status=progress 显示进度。
- 创建恢复盘或准备工具:准备 USB 引导盘含 TestDisk/PhotoRec、或 Windows 上的 Recuva、ShadowExplorer 等。
二、Windows 误删恢复(NTFS / FAT)
场景 A:启用了「文件历史记录」或「以前的版本」
步骤:
- 右键文件/文件夹父目录 → 选择 “还原以前的版本”(或 Properties → Previous Versions)。
- 选择合适版本点击 还原 或 复制到…(推荐复制到别的盘)。
场景 B:没有备份但需要快速尝试(非管理员命令)
- 关闭对该盘的一切写操作(退出程序)。
- 使用第三方免费工具(推荐先试免费版、不要安装到目标盘):
- Recuva(Piriform):界面友善,适合个人用户恢复文档/图片/视频。
- Disk Drill / PhotoRec 也可(PhotoRec 为开源命令行版,适合复杂情况)。
- Recuva 使用步骤(示例):
- 在另一盘下载并运行 Recuva → 指定要扫描的盘符 → 扫描 → 预览 → 恢复到另一个盘符(绝不恢复到原盘)。
场景 C:系统分区误删或引导扇区问题
- 可以尝试 TestDisk(开源,擅长分区/引导恢复):
- 下载并以管理员运行 → 选择磁盘 → Analyse → 找到丢失分区 → Write 恢复分区表 → 重启。
- 若怀疑为文件系统损坏,先不要用 chkdsk 直接修复(chkdsk 可能造成文件结构更改)。优先做镜像再测试。
三、Linux 误删恢复(ext4、xfs、btrfs 等)
注意:ext4 删除文件会把 inode 标记为可用,但数据块一般仍存在,越早恢复成功率越高。
1)最安全的方式:对磁盘做镜像并在镜像上恢复
sudo dd if=/dev/sdX of=/mnt/rescue/disk.img bs=4M conv=sync,noerror
在镜像上恢复(以 TestDisk/PhotoRec 操作):
sudo losetup -Pf /mnt/rescue/disk.img # 绑定成回环设备(会生成 /dev/loopXpY)
sudo fdisk -l /dev/loop0 # 查看分区
2)用 extundelete 恢复(ext3/ext4,仅在未重启后直接对原盘小心使用)
安装并用法(Ubuntu):
sudo apt update
sudo apt install extundelete -y
# 假设目标分区 /dev/sdb1
# 切换为只读挂载或卸载该分区再操作
sudo umount /dev/sdb1
sudo extundelete /dev/sdb1 –restore-file path/to/deleted/file
# 或恢复整个目录:
sudo extundelete /dev/sdb1 –restore-directory path/to/dir
# 恢复结果会在当前目录的 RECOVERED_FILES 里
注意:extundelete 要求 未对该分区有写入操作,且越早运行越好。
3)用 TestDisk / PhotoRec(通用,支持多文件系统)


- TestDisk:更擅长恢复分区结构和文件表;适合分区丢失或文件系统损坏。
- PhotoRec:按文件签名扫描恢复文件(不保留文件名),适合图片/视频恢复。

- 基本流程:
sudo apt install testdisk
sudo testdisk
# 交互式:选择磁盘 → 分区类型 → Analyse → Quick Search → 找到数据 → 按提示恢复
PhotoRec 用法(对镜像操作):
# 运行 photorec,选择设备或镜像 -> 选择文件系统类型 -> 选择要扫描的分区或整个磁盘 -> 选择文件类型 -> 选择输出目录(必须是另一块盘) -> 开始
sudo photorec /log /d /mnt/rescue/recovered /cmd /dev/sdb options,search
4)xfs / btrfs 等
- 对 XFS:可以尝试 xfs_repair(注意先做镜像);XFS 删除恢复超级困难,需专业工具或备份。
- 对 Btrfs:若有快照(btrfs subvolume list),可以用快照回滚:
sudo btrfs subvolume snapshot /mnt/snapshots/@snap_before /mnt/target_restore
- Btrfs 优势是若有自动快照(Timeshift、snapper),可直接恢复。
四、照片/视频等多媒体文件恢复(跨平台技巧)
- 对常见图片/视频,PhotoRec 超级可靠(按文件签名逐块扫描)。缺点:恢复后文件名与目录信息丢失,需要通过 EXIF/时间戳整理。
- 恢复后用 exiftool、jpeginfo、ffmpeg 等工具批量校验/重命名/转码。
五、企业级/服务端恢复注意事项
- 数据库文件(MySQL、Postgres):不要直接恢复数据库文件。应优先从备份或 binlog/ WAL 恢复,或把数据文件恢复到隔离机器再使用数据库工具检查一致性。
- LVM:若使用 LVM,可尝试 lvcreate –snapshot 先做快照,再在快照上恢复。
- 云盘 / 对象存储:优先检查回收站/版本控制(S3 有版本机制),避免磁盘级恢复。
六、实用命令速查(可复制)
镜像(强烈提议)
sudo dd if=/dev/sdX of=/mnt/rescue/disk.img bs=4M conv=sync,noerror status=progress
查占用(Linux)
ss -tulpen | grep :3000
sudo lsof -i :3000
extundelete(ext4)
sudo umount /dev/sdb1
sudo extundelete /dev/sdb1 –restore-directory path/to/dir
testdisk(交互式)
sudo testdisk /path/to/disk.img
photorec(命令行示例)
sudo photorec /log /d /mnt/rescue/recovered /dev/sdb
Windows:列举卷影(查看以前版本)
- 右键目录 → 属性 → 以前的版本
- 或用 Windows 资源管理器恢复
七、成功率与实战提议(重大小结)
- 越早越好:删除后立即停止写入,镜像优先。
- 备份是第一治本:启用文件历史记录 / Shadow Copies / 定期 rsync(Linux)/ cloud backup。
- 恢复到另一块盘:永远不要把恢复结果写回原盘。
- 照片与视频:PhotoRec 更靠谱;但文件名会丢失。
- 数据库 / 关键服务:专业流程或请专业数据恢复团队处理,避免二次损坏。
八、常见问答(速答)
Q:误删后我还继续用了电脑半小时还能恢复吗?
A:有可能,但成功率会下降。提议立即停止写入,尽快做镜像。
Q:能恢复已格式化的盘吗?
A:可能能——若格式化为快速格式且未写入大量新数据,TestDisk/PhotoRec 有机会恢复数据。
Q:恢复后文件名丢失怎么办?
A:用 exiftool(图片)或文件时间戳与目录结构手动归类;可用脚本批量重命名。
















暂无评论内容