我已将 Windows10 备份设置为每周进行完整备份图片(不是文件)的 C: 驱动器。从备份和恢复中心看,一切正常。图像保存在独立于主 SSD 的辅助硬盘上。没有加密或其他不寻常的属性。
辅助驱动器上的“WindowsImageBackup”目录有一个“Backup 2018-04-28”目录.vhdx
,其中包含两个文件,一个 432MB,一个 78GB,它们必须映射到 Windows 在启动驱动器上创建的三个分区中的两个。
我开始遇到一些稳定性问题,所以决定回到两周前,那时它运行正常。
我关闭电脑并从原始安装 USB 介质重新启动。它显示最新的图像是两周前的图像(这很奇怪,但没关系)。我选中它然后放手。大约 1 分钟后,我收到一个对话框,提示还原已取消,对话框上有一个“关闭”按钮。没有其他可用信息。
我又试了一次。现在,恢复开始后不久,我得到了以下信息:
The system image restore failed.
Error details: The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and
that the volume is not corrupted. (0x800703ED)
现在怎么办?我无法启动计算机。唯一的选择似乎是完全重新安装,但这会非常麻烦。
也许我可以拔下辅助驱动器,进行完整安装,然后重新连接以恢复备份映像?
更新 1
我打开命令行并用来diskpart
“清理” C: 盘。我重新启动并再次尝试恢复映像。这次我得到了不同的错误:
The system image restore failed.
Error details: The computer needs to be restarted to finish preparing
a hard disk for restore. To continue, restart your computer and run
the restore again. (0x80042403)
我做到了。下次运行时,我得到:
The system image restore failed.
An error occurred while performing the recovery operation. _Details_
“详细信息”链接显示:
No disk that can be used for recovering the system disk can be found.
Try the following: 1) A probable system disk may have been excluded
by mistake. 2) A USB disk may have been assigned as a system disk.
3) An invalid disk may have been assigned as system disk. (0x80042412)
1) 我排除了所有磁盘,只留下了我想要恢复的一个磁盘。我非常小心。2) 它不是 USB 磁盘。3) 它以前是系统磁盘。
diskpart
(通过命令行)没有显示对“磁盘 2”(即主启动驱动器)的任何修改。它实际上是一个 M.2 SSD,我无法更改它的驱动器号,除非断开其他物理驱动器的连接。
更新 2
在全新安装 Windows10 后,我想再次尝试恢复映像。这次我创建了一个“实时”Linux USB 启动,以便更好地跟踪正在发生的事情。我还曾经dd
制作过最近安装的映像,这样我至少可以随时返回到该映像。
映像恢复以完全相同的方式失败,提示“找不到可用于恢复系统磁盘的磁盘”。
启动 Linux 映像后,我发现所有分区都与原来完全一样,很明显恢复过程甚至不需要格式化驱动器。
果然,从 HD 启动后就回到了现有的 Windows 安装。
启动驱动器(500GB NVME SSD)上有三个分区...
- 499MB“恢复分区”
- 100MB“EFI 系统分区”
- 293GB“启动、页面文件、崩溃转储、主分区”
- 172GB“未分配”
... 但备份中只有两个 .vhdx 文件。也许有一些手动方法可以将其中一个提取到主分区中?
该.vhdx
文件...一旦我按照步骤拥有它们,我可以挂载它们!使用“计算机管理”( This PC
> Manage
),我可以转到“磁盘管理”,然后转到 Action::Attach VHD 来挂载映像。一切似乎都在那里!(请注意,右键单击 .vhdx 文件并选择“挂载”不会不是工作。)
现在...我如何将其内容转移到真实的磁盘分区?
更新 3
我找到了有关如何恢复 .vhd 文件的步骤,但由于我有一个 .vhdx 文件,所以它们不起作用。我找到的所有转换说明都需要 Hyper-V,而 Windows-10“家庭”版不提供该功能。
我找到了微软的 Disk2vhd 实用程序,但遗憾的是它只能读取物理磁盘而不能读取已安装的 .vhdx 文件。
不过,离开 Windows 会有更多的选择,我最终遇到了qemu-img
这样的转换。具体来说:
qemu-img convert -p -f vhdx -O raw /foo/hexdigits-backup-file.vhdx /bar/c3.raw
对于旋转磁盘,如果可以在不同的物理设备上进行输入和输出,转换速度通常会更快。我决定只需要转换主分区(分区 3),因为其他分区在新安装时可能没有问题。
最后,以 root 身份复制它:
sudo dd if=/bar/c3.raw of=/dev/nvme0n1p3 bs=1M
dd
如果您的版本足够新,可以支持它,则可以添加“status=progress” 。或者,您可以sudo killall -USR1 dd
从另一个 shell 执行此操作,让旧版本吐出其状态。
剩下的就是祈祷并重新启动...
Windows 启动后显示“正在修复...”但最终失败并提示无法修复。
此时我尝试了下面 harrymc 提供的解决方案... 它也不起作用,因为 PowerShell 无法将 .vhdx 文件转换为 .wim 文件。谁知道呢,也许备份只是被损坏了(虽然qeum-img
没有抱怨)。
我还可以尝试其他方法,但花费的时间太长了。我放弃了。我从来没有恢复过用 制作的备份dd
。我从头开始安装了 Windows10(再次),并再次进行了所有配置。我将 .vhdx 文件安装为驱动器...
- 在 Windows 文件资源管理器中,右键单击顶层
This PC
(或已重命名的任何内容)并选择“管理”。 - 在 下
Storage
,单击Disk Management
。 - 从
Action
菜单中选择Attach VHD
。找到您的 .vhdx 文件并选择它。使用只读模式以确保安全。 - 再次使用文件资源管理器,找到已安装它的驱动器:。验证它看起来不错,然后尝试打开一个或两个文件。
...并复制了所有非操作系统文件以及Users
看似ProgramData
合适的内容。
最后,我不得不重新进行所有配置并重新安装所有软件,但至少我没有丢失任何数据。
新安装的 Windows 系统映像备份仍然启用,但我对它没有任何信任,所以我还使用傲梅备份(目前为免费版)定期在另一个驱动器上创建图像,备份定期通过网络创建到另一台机器的磁盘映像,并且dd
(通过 Linux live USB)偶尔创建驱动器的完整原始映像。
下次遇到问题时,我希望其中至少一种方法可以成功恢复。
答案1
此网站上有大量与你的问题相关的帖子。我使用免费的 AOMEI Backupper,它支持 Windows 识别的所有存储设备,并且具有 Windows PE 和 Linux Bootable 作为可启动媒体。所有这些都是免费的,并且恢复时从未出现问题。
据说以下步骤可以解决您的问题,但我从未尝试过。事实上,我一直避免使用 Windows 备份。
- 断开机器与网络的连接。
- 从媒体安装 Windows 10。选择“我没有产品密钥”和“自定义:仅安装 Windows”。这将创建所有分区(C:和 EFI 恢复)并为您提供一台 Windows 10 机器来工作。
- 登录
- 创建文件夹
C:\MountedVHDX
- 创建文件夹
C:\WindowsImage
并从备份WindowsImage
文件夹中复制。 - 连接一个具有至少与系统映像备份一样多可用空间的外部磁盘,并将其命名为
E:
。 - 创建文件夹
E:\CapturedWIM
启动 PowerShell 并执行:
Mount-WindowsImage -ImagePath fullpathofvhdxindoublequotes -Path c:\MountedVHDX -Index 1 New-WindowsImage -CapturePath C:\MountedVHDX -Name Win10Backup -ImagePath E:\CapturedWIM\sib.wim -Description "Windows 10 Backup" -Verify Dismount-WindowsImage -Path C:\MountedVHDX -Discard
重新启动 Windows。
- 在登录屏幕上单击电源图标,然后按住 Shift 键单击“重新启动”。机器将以恢复模式重新启动。
- 选择
Troubleshoot -> Advanced -> Command Prompt
当命令窗口出现时执行:
Format c: Dism /Apply-Image /ImageFile:E:\CapturedWIM\sib.wim /Index:1 /ApplyDir:C:\
就是这样。当您重新启动时,您的 Windows 仍将处于激活状态。
答案2
我还没有这样做过,所以我不能确定所有的方法是否都能完美运行,但如果我处于你的情况,我会尝试以下方法:
- 从备份中挂载每个 VHDX。
使用 7-Zip 从每个已安装的 VHDX 中提取每个分区的原始映像,
可以按如下方式完成:- 启动 Linux 发行版(LiveCD 也可以)
找到您的硬盘。
我猜想,/dev/sda
如果它是您的主硬盘,那么它很可能是。
注意:您不会直接写入驱动器,而是写入每个分区:/dev/sda1
、、/dev/sda2
等等。- 不知道你的 *nix 技能水平,我将稍微分解一下:
/
是 Linux(或其他类似 UNIX)操作系统可见的所有文件类对象的根。dev
是操作系统列出枚举设备的虚拟文件夹。/
还可充当文件夹分隔符。sd
是存储设备。(hd
取决于你的电脑、你的磁盘驱动器以及你使用的 Linux 发行版,这可能是)a
这是此类型的第一个存储设备。如果您要放置这些文件的驱动器是 ,b
则第二个驱动器将是 ,第三个驱动器将是c
,等等...1
这是此特定驱动器上的第一个分区。第二个是2
,第三个是3
,等等...
- 不知道你的 *nix 技能水平,我将稍微分解一下:
如果您选择的 Linux 发行版自动安装了硬盘,则必须卸载它,方法是在 GUI 中右键单击它并选择卸载,或者使用命令
umount
。从终端,使用
dd
命令将原始分区映像复制回硬盘上的适当位置。dd if=/path/to/F.fat of=/dev/sda1 dd if=/path/to/G.ntfs of=/dev/sda2
- 我对这部分不是 100% 确定。
如果有人能告诉我这是否正确,或者帮助修复错误,那就太好了。 - 注意:请绝对确保将其复制到正确的位置,因为如果有的话,这将彻底破坏以前存在的任何分区。
- 我对这部分不是 100% 确定。
- 重新启动以查看其是否有效。
在步骤 2 和步骤 3 之间可能还存在另一个步骤,但我不确定是最好保持驱动器原样、擦除它,还是尝试使用空分区(然后在步骤 6 中替换它)来构建最终希望分区表看起来的近似值。