再做一次,fdisk -l我可以看到它的名字是 now /dev/sdb。Debian Stretch 将它安装在其中,/media/[username]/[whatever]但我更喜欢将它作为 root 安装在 下/mnt/USB/,因此:
umount /media/[username]...
mkdir /mnt/USB/ # this is done only this first time
mount -t auto /dev/sdb1 /mnt/USB -rw
mkdir /mnt/USB/backup #this is done only this first time
mkdir /mnt/USB/backup/partition_table #this is done only this first time
mkdir /mnt/USB/backup/files #this is done only this first time
使用 rsync 备份根分区和 ESP(EFI 系统分区)上的文件。如果您还想要分区表的副本,可以使用
sgdisk
's-b
(backup) 选项将分区表的备份保存到文件中。使用-l
(加载)恢复。sgdisk 手册页建议您仅将备份恢复到同一个磁盘,因为即使在标称大小相同的磁盘上,大小也可能略有不同。无论如何,如果您只是手动重新创建分区,您可能会更好。我认为使用 UEFI 备份磁盘更加容易,因为除了分区表之外的所有内容都在文件中,而不是像第一个 GRUB 阶段那样在 msgic、非分区扇区中。
dd if=/dev/sda of=/my/backup/image.img bs=8M
当我需要 EFI 在我备份的驱动器上完好无损时,我倾向于使用将整个设备映像到映像文件。这可能有点矫枉过正(而且耗时),但这是我所知道的最简单的方法。
如果需要,您可以将映像挂载为循环设备并在其中浏览/管理文件。
gnome-disk-utility
提供了一个易于使用的 GUI 来处理它。此备份将复制分区表,然后对分区内容进行增量备份
rsync
。与盲目的完整备份相比,它的优势dd
在于您可以经常快速更新备份,并且只会更新已更改的信息,并且您可以轻松访问副本中的所有文件,并且您可以在之前修改它们恢复备份,或者只拯救其中的一部分。我正在使用 Debian Stretch(命令可能有不同的名称,例如 RedHat)
这里的一切都是以 root 身份完成的,所以要小心!:
su
查看哪个硬盘被标识为sda、sdb等。
fdisk -l
我看到我要备份的笔记本电脑硬盘被称为
/dev/sda
(sda1,sda2 ...是分区)。警告:不要盲目复制行。我假设我要备份的硬盘是
/dev/sda
,但这可能不是你的情况。在我们要存储备份副本的位置安装外部硬盘驱动器:
再做一次,
fdisk -l
我可以看到它的名字是 now/dev/sdb
。Debian Stretch 将它安装在其中,/media/[username]/[whatever]
但我更喜欢将它作为 root 安装在 下/mnt/USB/
,因此:判断分区表是MBR还是GPT类型
您会看到“分区表:gpt”或“分区表:msdos”
将分区表备份到外部硬盘驱动器中的文件
如果您有 MBR 表(分区表:msdos):
我们可以对存储分区表的所有扇区进行完整的二进制备份:
(我们稍后会看到如何恢复它)
备注:我更喜欢后者
dd
,sfdisk
因为后者要求您确认是否要向分区表写入一些更改,而在我尝试的过程中,我不小心按了“Y”,所以很容易搞砸。如果您有 GPT 表
(我们稍后会看到如何恢复它)
将所有文件增量备份到外部驱动器:
这假设你和我一样,在硬盘驱动器中安装了一个 linux 发行版,并且所有信息树都挂在上面
/
(请你有知识的 linux 人,用更技术的方式重写它)。在我的情况下,备份所有内容可以/
解决问题,因为安装了 efi 分区,/boot/efi
因此它的内容也将包含在备份中:rsync -aAXv /* /mnt/USB/backup_of_laptop_hd/files --exclude={/dev/ ,/proc/ ,/sys/ ,/tmp/ ,/run/ ,/mnt/ ,/media/ ,/lost+found ,/home/ /.gvfs,/var/tmp/ ,/home/ /.cache/ ,/home/ /.thumbnails/ / ,/root/.thumbnails/ / ,/root/.cache/ ,/home/ / .config/VirtualBox/*} --delete
备注1:这是一个增量备份,意思是下次你做的时候,你不需要再复制所有的东西,但只有改变的文件会自动更新(而那些被删除的,也会从副本中删除) )。
备注 2: {} 之间的所有选项都是在备份中没有意义的东西(例如临时的东西)和虚拟机(我更喜欢在每台机器上保留一个封装的 .ova 文件)。
如何恢复所有这些:
首先,最坏的情况是你永远搞砸了硬盘。您首先要恢复分区表(如果您的分区表仍然存在,请跳过此步骤),然后从活动 USB 启动:
在 live 发行版中打开终端并检查硬盘驱动器的名称
我将假设笔记本电脑的硬盘驱动器仍在
/dev/sda
示例中(警告,这次很可能是/dev/sdb
)。如果您的表是 MBR 表,请按照我们上面所做的那样安装带有备份的外部硬盘驱动器,然后:
但是,如果你的表是 GPT 表,它会是:
如果您已经这样做了,或者如果您因为分区完好无损而不需要这样做,那么是时候恢复所有文件了。这也可以从正常工作的系统中非常安全地使用,以将其还原到上次备份:
备注:最后四行我不得不将它们添加到
rsync
命令中,因为由于某种原因,直接位于树根目录上的文件不会被恢复。另外,当文件夹打开/直接在计算机中被擦除时,它不会在备份中被擦除。这不会带来任何麻烦(相应的文件和库不再存在,因此没有人链接或需要它们)但它很难看。谁能帮我在这里更正 rsync 语法?最后,
备注 1:虽然我经常使用上述 rsync 语法将系统恢复到以前的状态,但我从来不需要恢复分区表,所以:
备注 2:为简单起见,在 MBR 分区的情况下,我只包括如何使用
dd
. 如果您有扩展分区,请以这种方式进行备份:并以这种方式恢复 MBR 和分区表: