Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
或许,这个标题咋看起来有一点标题党的味道,但却是近日发生在我身上的真实事件——本意想要将自己手持的移动硬盘清空,却由于一念之差,将操作对象误选择为电脑内置的硬盘,导致意外删除了电脑系统内的所有分区。
不幸的是,当我反应过来时,新的分区表已经被写入硬盘,Windows 随即蓝屏并重启。
幸运的是,由于我对可能遭遇的意外情况作出了后备方案,因此这次看似灾难性的操作的唯一实质性代价就是花去了我两个小时的休闲时间。
以下是我的事故经历应对方法。如果你遇到了类似情况,亦可参照这里的介绍,试图恢复数据。需要注意的是:这里介绍的方法不一定能够保证在任何情况下恢复被误删的数据。保证数据安全的主要且可靠方案是定期备份(我自己也有对重要数据定期执行间隔最多一周的冷备处理)。少数派内也有一篇相当优秀的备份指南,点这里直达。
数据无价。谨慎操作。
恢复经历
以下是我将电脑从瘫痪到恢复完毕的全过程。由于部分操作在操作时未能截图,因此下面的部分截图可能来自于互联网1。
立刻停止对硬盘的任何写操作
当发生对硬盘的误操作时,需要做出的第一个应急措施就是停止对硬盘所有可能的写操作。之所以这么做,是因为被删除的内容不会立刻从硬盘上被物理抹除2。通过阻止后续新内容对原有数据的覆盖,可以大幅增加误操作能被撤销的可能性3。
在这里,由于我电脑上的 Windows 立刻蓝屏,因此所有操作系统级别的写操作随即中止4。我只需关闭电源即可最大程度地阻止对硬盘的进一步写入。
进入维护系统
由于分区表已被破坏,预载在电脑里的系统实质上已经无法启动。为此,便需要借助已经提前在其它介质上准备好的恢复系统来进行恢复操作。在这里,我使用的是 Edgeless 维护盘。如有兴趣,我在少数派上编写了一篇关于它的介绍,这里是它的传送门。
进入 BIOS,将 U 盘设定为第一启动项,即可重启进入 Edgeless PE 系统,并准备开始维护操作。
恢复误删分区
在这里,我使用 DiskGenius 专业版执行恢复操作。
需要注意的是:DiskGenius 免费版并不能将识别到的分区恢复到硬盘内(这属于付费功能),因此请自行准备好标准或以上级别的授权5来执行恢复操作。
当然,也有一些免费(且开源)的软件能够助力恢复误删操作。为帮助抉择,我将在本文的末尾列出这些软件。但我个人并未在本次操作中实际测试它们的恢复效果,因此不对恢复数据的可能性做任何担保。
下文将假定你已经拥有 DiskGenius 专业版。首先,在发生误删的磁盘上右键选择「搜索已丢失分区(重建分区表)」,分析丢失的分区结构。在实际测试中,除了一个被 LUKS 加密的 Linux 分区未能识别到,其余分区均在数秒内被准确找出。
在搜索过程中,DiskGenius 会在找到分区后弹出确认对话框。如果这是你需要的分区,点击「保留」即可继续。
在(可能漫长的6)等待和确认过程后,能够恢复的分区便已经在软件中列出。
之后,只需要点击左上角的「保存更改」,分区结构就成功恢复了。
到这里,我长出了一口气。重要的分区都已准确无误的找回,看起来也没有什么明显的问题。本以为一切已经尘埃落定,只需重启即可万事大吉,但没想到这却仅仅是一个开始。
回滚系统
重启之后,迎接我的第一个画面并不是正常的启动界面,而是一个蓝屏,告诉我重要的启动文件已经缺失,因而无法正常进入系统。很不幸,看起来恢复的 Windows 并不能正常启动。
理论上,这里可以通过覆盖升级的方式恢复损坏的文件。不过,出于时间成本的妥协(被恢复的系统可能还有更多未知损伤),我决定直接回滚到最近一次的系统备份。我重新进入了维护系统,将无法使用的 Windows 分区删除并重新分区后,使用 Dism++ 在分区上执行了恢复备份的操作。
恢复备份的操作也并不复杂。首先,点击主界面上方的「恢复功能」,并找到「系统还原」。
之后,会弹出一个对话框。由于是需要恢复先前的系统备份,因而先单击第一个「浏览」(也就是截图中标蓝的)按钮,选择备份文件所在的位置。我将镜像保存在了独立的外置硬盘内,你可以根据自己的实际情况灵活选择。
之后,还需要确保待还原的磁盘分区选择正确。在这里,C:
已经是正确的位置,不必再修改。完整的操作录屏如下:
之后,点击「确定」即可开始恢复进程。
恢复很顺利。过了不到十分钟后,软件告诉我恢复完成。由于启动分区并未在当时发生肉眼可见的损伤,因而我认定不需要修复引导,便直接重启进入了恢复的系统。
异常的恢复结果
Windows 可以顺利开机。一切仿佛都恢复了正常。
然而,系统未能自动开始 BitLocker 加密。在我的印象当中,如果系统正常恢复,Windows 会自动对新创建的系统分区执行加密操作。但这次没有。这让我怀疑恢复是否仍未完成。在试图手动执行 BitLocker 加密操作后,Windows 回报「找不到请求的系统设备」,我的顾虑成真。7系统依旧存在还未修复的问题。
重建引导分区
在网上搜寻一番后,发现该问题出现的主要原因是引导记录故障,导致 Windows 无法正确识别磁盘。解决方案也很简单粗暴:重建引导分区,也就是俗称的 ESP 分区。
为此,我第三次进入了维护系统,将原有的引导分区删除,并通过 DiskGenius 的重建 ESP/MSR 分区功能,重建了引导分区8。下方是操作的完整录屏。
新创建的分区是没有正确的引导信息的。为此,我使用 Dism++ 内置的「引导修复」功能,以将启动所必需的文件和信息写入到新创建的引导分区中。操作步骤如下图9:
完成写入操作后,重启进入 Windows。BitLocker 已经自动启动加密进程,说明修复有效。
修复恢复分区
至此,如果不在意系统内置 WinRE 无法使用的情况,那么修复便可告一段落。不过,考虑到我有时会使用 WinRE 进行一些不依赖启动盘的维护操作,修复恢复环境是必要的。由于在回滚系统时,我一并将旧有的恢复分区删除,因此这里需要手动重建以恢复 WinRE。
重建方法很简单。首先,在磁盘内新开一个大约 550MB 的 NTFS 分区10。格式化后,从 Windows 安装镜像 install.wim
内提取 Winre.wim
,放在该分区内备用11。
之后,打开具有管理员权限的 PowerShell,执行如下命令:
ReAgentc.exe /setreimage /path <到 Winre.wim 的完整路径>
这是设定恢复系统镜像位置的指令12。执行完毕后,该镜像文件会被设置隐藏和保护属性,因而它会从这个分区里「消失」。这是正常的,无需惊慌。
之后,打开 DiskGenius,右键恢复分区,点击「隐藏分区」选项,并点击界面左上角的「保存更改」按钮,使操作生效。
随后,再次右键恢复分区,并点击「更改分区参数」选项。在「文件系统类型」下拉框内找到并选择「Microsoft recovery partition」,点击「确定」,并点击「保存更改」应用设置。
保存完毕后,回到带有管理员权限的 PowerShell,执行下列命令开启恢复环境:
ReAgentc.exe /enable
如果命令执行无误,恢复环境便已修复完毕并准备就绪。你可以在「高级选项」里使用你喜欢的修复方式了。
至此,系统已经完全修复完毕。耗时总长两小时。可以放松紧张的神经了 😀
一点回顾
在整个修复过程中,起到关键性作用的还是我之前定期备份的系统镜像。很大程度上,如果我先前并没有备份,那么这次可能就需要花上大概一天左右的时间重装系统 + 安装和调试软件了。
不过,这次修复系统的经历,让我忽然发现了在灾难性事故面前,除恢复备份以外的修复可能——直接试图找回被删除的分区。尽管因为一些因素,它没能在这次修复过程中帮太多忙。但是它和本次发挥作用的备份一样,说不定就能在哪一个瞬间派上用场。
也许你会好奇:那个被一同删除的 Linux 分区怎么样了?答案是:被救回来了。如果好奇的话,我在原有分区的位置上创建了一个全新但未格式化的分区,之后使用磁盘软件 parted 成功读取到了该位置原有的分区数据,因而成功无损的修复了 Linux 分区。13
当然,这次修复历程也充分印证了备份的重要性。与其事后百般折腾,不如未雨绸缪。
替代软件
当然,也许你会希望用一些免费(且开源)的软件助力恢复误删分区数据。以下是软件列表:
需要注意的是:它们的恢复效果是不被保证的。你需要自行承担因使用它们而造成的任何风险。
关联阅读
- 不想被勒索软件毁掉数据,就按照「3-2-1 原则」来备份文件
- 快快应急,慢慢修复:你的专属 PC 急救包
- 这个常被忽略的「小钥匙」,每个 Windows 用户都应该用起来
- 心之所想、一键直达:你可能不知道的 Windows 快捷方式玩法
> 下载少数派 客户端、关注 少数派公众号,了解更妙的数字生活 🍃
> 想申请成为少数派作者?冲!