我买了一台新的 HP 笔记本电脑。我将彻底删除 Windows 并安装 Ubuntu(不是双启动)。
但是,如果我需要将笔记本电脑送回保修,我希望能够将磁盘恢复到其原始状态(启动+分区+原始操作系统+原始软件+等等)。
将原始 1TB 磁盘保存到网络位置的最佳方法是什么,这样我就不需要 > 1TB 的备份驱动器了?此外,解决方案的适当恢复步骤是什么?
(注意:第一次启动时我将简单地启动到 Ubuntu Live USB)。
答案1
如果您进行压缩备份,则备份不需要超过 1 TB 的存储空间。新机器上安装的 Windows 10 不应大于 40 GB,压缩率接近 50%,因此您“仅”需要大约 20 GB 左右的存储空间。如果您使用内置的 Ubuntu 备份实用程序,那么恢复(如果您需要保修服务)可以从您用于进行备份(并可能安装)的同一 Live 媒体进行。
稍微棘手的部分是准确地重新创建原始分区——Windows 机器不再带有一个大分区;相反,有一个“启动”分区、一个 Windows 分区和一个数据分区(最简单的情况)。如果您担心由于安装 Ubuntu 而导致保修失效或被拒绝,您需要确保可以将这些分区放回到与原来完全相同的位置和大小。幸运的是,gparted
有一个选项可以备份分区,然后精确地恢复它——如果您使用该选项按顺序备份每个分区,然后对这些备份进行压缩备份,您只需要在从原始 Windows 到压缩的第二代备份所需的时间内使用大容量存储空间——并且在恢复时/如果您恢复时再次使用。
但是,你可以备份启动分区和 Windows 分区进入未触及的数据分区,然后将这些文件的压缩备份到外部介质上。完成后,如果您想要/需要恢复,您将创建一个足够大的分区来恢复压缩备份,从恢复的副本中恢复分区,然后删除并重新创建填充所有剩余空间的数据分区。
答案2
备份
使用 Live USB 启动
在正在备份的计算机上,启动 Ubuntu Live USB,并打开终端窗口。
列出分区信息
我要备份的磁盘是
/dev/nvme0n1
。替换nvme0n1
为您的磁盘。您可以使用 Ubuntu 中的磁盘应用程序查看磁盘及其设备名称的列表。sudo fdisk -l /dev/nvme0n1
这就是制造商对我的磁盘进行的分区方式。
Disk /dev/nvme0n1: 953.9 GiB, 1024209543168 bytes, 2000409264 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 1C949023-866B-4764-B397-252D5125277C Device Start End Sectors Size Type /dev/nvme0n1p1 2048 534527 532480 260M EFI System /dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved /dev/nvme0n1p3 567296 1972772863 1972205568 940.4G Microsoft basic data /dev/nvme0n1p4 1972772864 1974779903 2007040 980M Windows recovery environment /dev/nvme0n1p5 1974779904 2000396287 25616384 12.2G Microsoft basic data
备份分区表
从正在备份的计算机运行以下命令来创建分区表的备份。
cd ~/ sudo sgdisk --backup=nvme0n1.gpt /dev/nvme0n1
将备份复制到
/mnt/data/Backup/
远程计算机上的目录。/mnt/data/Backup/
用远程计算机上的现有备份位置替换。相应地替换remote_user
和REMOTE_COMPUTER
。rcp ~/nvme0n1.gpt remote_user@REMOTE_COMPUTER:/mnt/data/Backup/
验证文件已安全复制后,删除本地副本。
rm ~/nvme0n1.gpt
尖端
实际上,您可以并行备份每个分区,使用下面的步骤 5 中的不同终端窗口。只需确保
sudo -i
在每个新终端窗口中执行即可。要在备份过程中监控您的连接,请执行以下操作。
在正在备份的计算机上,打开终端并输入:
ping REMOTE_COMPUTER.local
在远程计算机上,打开终端并输入:
ping <IP ADDRESS OF COMPUTER BEING BACKED UP>
(我认为简单来说
ping ubuntu.local
也可能有效,因为你是从 Live USB 运行的)。我认为,持续的 ping 操作可使计算机之间的连接保持畅通。我注意到,偶尔会有一台计算机无法连接;我抵制住了终止该
dd
进程的冲动,而另一台计算机会在几分钟后开始响应 ping 请求。如果您想查看备份过程的进度和预计时间 (ETA),可以将命令合并
pv
到下面的步骤 5 中。我在备份期间没有这样做,但您可以在恢复有关如何使用的部分pv
。
备份每个分区到远程计算机
从正在备份的计算机运行以下命令来创建每个分区的备份。
备份文件放在
/mnt/data/Backup/
远程计算机的目录中。/mnt/data/Backup/
用远程计算机上现有的备份位置进行替换。 相应地remote_user
替换REMOTE_COMPUTER
。对上面步骤 2 中列出的每个分区执行
dd
命令。例如,对于我的五个分区,我分别执行了以下命令:sudo -i # (1) 260.0 MiB dd if=/dev/nvme0n1p1 | ssh remote_user@REMOTE_COMPUTER dd of=/mnt/data/Backup/nvme0n1p1.img # (2) 16.0 MiB dd if=/dev/nvme0n1p2 | ssh remote_user@REMOTE_COMPUTER dd of=/mnt/data/Backup/nvme0n1p2.img # (3) 940.4 GiB date; dd if=/dev/nvme0n1p3 | gzip -1 - | ssh remote_user@REMOTE_COMPUTER dd of/mnt/data/Backup/=nvme0n1p3.img.gz; date # (4) 980.0 MiB dd if=/dev/nvme0n1p4 | ssh remote_user@REMOTE_COMPUTER dd of=/mnt/data/Backup/nvme0n1p4.img # (5) 12.2 GiB dd if=/dev/nvme0n1p5 | ssh remote_user@REMOTE_COMPUTER dd of=/mnt/data/Backup/nvme0n1p5.img
请注意,对于分区号 3,我选择
gzip
该分区是因为其大小较大。由于这是 Windows 主分区,并且从未使用过,因此我相信磁盘上的大部分位都是零,从而可以进行显著的压缩。如果使用该磁盘,或者您不使用压缩,则备份文件可能太大;此外,将数据复制到远程计算机可能需要更长的时间。分区号 1、2、4 和 5 并不大,而且我有存储空间来备份它们,所以我没有费心压缩它们,但gzip
如果您愿意,也可以对所有分区使用它们。这是第三个分区的示例输出。
root@ubuntu:~ # date; dd if=/dev/nvme0n1p3 | gzip -1 - | ssh remote_user@REMOTE_COMPUTER dd of=/mnt/data/Backup/nvme0n1p3.img.gz; date Fri Nov 3 03:23:06 EDT 2017 remote_user@REMOTE_COMPUTER's password: 1972205568+0 records in 1972205568+0 records out 1009769250816 bytes (1.0 TB, 940 GiB) copied, 4422.5 s, 228 MB/s 45542474+1 records in 45542474+1 records out 23317746863 bytes (23 GB, 22 GiB) copied, 4417.97 s, 5.3 MB/s Fri Nov 3 04:36:49 EDT 2017
以下是已备份文件的列表。
remote_user@REMOTE_COMPUTER:/mnt/data/Backup $ ls -g -o -h total 36G -r--r--r-- 1 18K Nov 3 01:14 nvme0n1.gpt -r--r--r-- 1 260M Nov 3 00:55 nvme0n1p1.img -r--r--r-- 1 16M Nov 3 00:55 nvme0n1p2.img -r--r--r-- 1 22G Nov 3 04:36 nvme0n1p3.img.gz -r--r--r-- 1 980M Nov 3 00:56 nvme0n1p4.img -r--r--r-- 1 13G Nov 3 01:06 nvme0n1p5.img
如您所见,Windows 分区(分区号 3)的压缩大小只有 22GB,而原始分区大小为 940GB。同样,这是可能的,因为我在计算机刚买的时候备份了这个分区。
恢复
使用 Live USB 启动
在正在恢复的计算机上,启动 Ubuntu live USB,并打开终端窗口。
列出分区信息
我要恢复的磁盘是
/dev/nvme0n1
。替换nvme0n1
为您的磁盘。您可以使用 Ubuntu 中的磁盘应用程序查看磁盘及其设备名称的列表。sudo fdisk -l /dev/nvme0n1
输出将取决于您在安装 Ubuntu 时如何对磁盘进行分区。
Disk /dev/nvme0n1: 953.9 GiB, 1024209543168 bytes, 2000409264 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 2CF060B8-D127-491A-80D6-6AE411E5A7B8 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 405503 403456 197M EFI System /dev/nvme0n1p2 405504 10172415 9766912 4.7G Linux filesystem /dev/nvme0n1p3 10172416 242595839 232423424 110.8G Linux filesystem /dev/nvme0n1p4 242595840 2000409230 1757813391 838.2G Linux filesystem
恢复分区表
从正在恢复的计算机运行以下命令。
/mnt/data/Backup/
用远程计算机上现有的备份位置进行替换。 相应地remote_user
替换REMOTE_COMPUTER
。cd ~/ rcp remote_user@REMOTE_COMPUTER:/mnt/data/Backup/nvme0n1.gpt ~/ sudo sgdisk --load-backup=nvme0n1.gpt /dev/nvme0n1 The operation has completed successfully.
列出(已恢复)分区信息
sudo fdisk -l /dev/nvme0n1
如您所见,我的磁盘的分区表已恢复为原始制造商分区。
Disk /dev/nvme0n1: 953.9 GiB, 1024209543168 bytes, 2000409264 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 1C949023-866B-4764-B397-252D5125277C Device Start End Sectors Size Type /dev/nvme0n1p1 2048 534527 532480 260M EFI System /dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved /dev/nvme0n1p3 567296 1972772863 1972205568 940.4G Microsoft basic data /dev/nvme0n1p4 1972772864 1974779903 2007040 980M Windows recovery environment /dev/nvme0n1p5 1974779904 2000396287 25616384 12.2G Microsoft basic data
尖端
实际上,您可以并行恢复每个分区,使用下面的第 7 步中的不同终端窗口。只需确保
sudo -i
在每个新终端窗口中执行即可。要在备份过程中监控您的连接,请执行以下操作。
在正在恢复的计算机上,打开终端并输入:
ping REMOTE_COMPUTER.local
在远程计算机上,打开终端并输入:
ping <IP ADDRESS OF COMPUTER BEING RESTORED>
(我认为简单来说
ping ubuntu.local
也可能有效,因为你是从 Live USB 运行的)。
安装进度监控工具
安装一个工具,用于在终端中查看恢复过程的进度。此工具将在后续命令中用到。
sudo apt install pv
pv
在命令行上显示进度条,其中包含百分比和剩余时间 (ETA)。我发现 ETA 非常准确;这非常有用,因为恢复 1TB 分区可能需要一天多的时间。请注意,ETA 1:12:05:40 翻译为“一个 24 小时的一天:十二小时:五分钟:四十秒”;换句话说,差不多 36 小时!从远程计算机恢复每个分区
从正在恢复的计算机上运行以下命令。
备份文件是从
/mnt/data/Backup/
远程计算机上的目录复制的。/mnt/data/Backup/
用远程计算机上现有的备份位置进行替换。 相应地remote_user
替换REMOTE_COMPUTER
。使用步骤 4 中的信息作为 的值
pv -s
,这样它就可以计算出您的 ETA。您可以四舍五入到最接近的 MB,因为这不必精确;它只是向您显示大约剩余多少时间。对上面第 4 步中列出的每个分区执行
dd
命令。例如,对于我的五个分区,我分别执行了以下命令:sudo -i # (1) 260.0 MiB date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p1.img" | pv -s 260M | dd of=/dev/nvme0n1p1; date # (2) 16.0 MiB date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p2.img" | pv -s 16M | dd of=/dev # (3) 940.4 GiB date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p3.img.gz | gunzip -1 - " | pv -s 940G | dd of=/dev/nvme0n1p3; date # (4) 980.0 MiB date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p4.img" | pv -s 980M | dd of=/dev/nvme0n1p4; date # (5) 12.2 GiB date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p5.img" | pv -s 12G | dd of=/dev/nvme0n1p5; date
请注意,对于分区 3,我们解压了备份文件。如果您还压缩了其他分区的备份文件,
gunzip
也请将其用于这些文件。以下是分区号 4 的输出示例。您需要输入远程计算机的密码。密码输入提示可能会被进度输出稍微遮挡,但只需输入您的远程密码,然后按 Enter 即可。
root@ubuntu:~ # sudo -i root@ubuntu:~ # date; ssh remote_user@REMOTE_COMPUTER.local "dd if=/mnt/data/Backup/nvme0n1p5.img" | pv -s 12G | dd of=/dev/nvme0n1p5; date Sun Feb 11 03:17:30 UTC 2018 remote_user@REMOTE_COMPUTER's password: 12.2GiB 0:33:01 [6.31MiB/s] [=========================================================================>] 101% 25616384+0 records in 25616384+0 records out 13115588608 bytes (13 GB, 12 GiB) copied, 1982.54 s, 6.6 MB/s Sun Feb 11 03:50:33 UTC 2018
性能说明
我使用了 5 GNZ Wi-Fi(无线 AC)来完成此过程。要备份的计算机有一个 nvme 驱动器,而接收备份文件的计算机有一个 SSD 驱动器。最大的分区是 940 GB;备份此分区花了一个多小时,但恢复它却花了 36 个小时。在整个过程中,Wi-Fi 传输速率在 ~4 MiB/s 到 ~12 MiB/s 之间波动,有时会降至 0MiB 或短暂达到 16MiB。
我的机器刚从制造商那里买来时我就做了备份,因此未使用的 nvme 磁盘在所有未使用的区域都有“零”;这使得 940GB 分区的压缩率和备份时间非常快。
因此,我强烈建议在您的计算机是新的时候、启动 Windows 之前先进行备份。