如何备份有 2 个分区的 USB 驱动器?(Kali Linux Live CD 持久性)

如何备份有 2 个分区的 USB 驱动器?(Kali Linux Live CD 持久性)

是否可以将 USB 驱动器上的 Kali 的两个分区完全备份到笔记本电脑的硬盘驱动器上,同时在将来将其恢复到 USB 时保持其功能?到目前为止,我只看到恢复主分区的方法(我在 Windows 上,我知道它无法检测到多个分区,但我愿意在辅助 USB 驱动器上进入实时 Linux 发行版)。这样做的原因是我想使用具有持久性的 ParrotOS Live CD,但我不想失去配置 Kali 的所有工作。

答案1

备份完整的 USB 驱动器非常容易。在 Linux 中,USB 驱动器可用作块设备。分区也可用作块设备。实际上,它们只是保存它们的驱动器的片段。内核读取分区表并提供名称,如/dev/sdx1/dev/sdx2,因此您(以及进程和操作系统本身)不必使用/dev/sdx,每次都明确考虑分区偏移量,也不必注意您的读/写是否不会跨越分区边界。

任何备份方法/dev/sdx2都可用于备份/dev/sdx。从技术上讲,这没什么区别:您从块特殊文件读取数据,然后写入其他地方。任何读取、不更改任何内容并写入的工具都可以。

在 Linux 中它可以简单到(选择一个):

cat /dev/sdx >/path/to/image
pv  /dev/sdx >/path/to/image
cp  /dev/sdx  /path/to/image

或者(不那么简单,但是很常见的例子):

dd if=/dev/sdx of=/path/to/image bs=8M

在您的情况下,/path/to/image它应该属于您的笔记本电脑硬盘的已安装文件系统。

复制全部/dev/sdx意味着复制主引导记录和分区表(如果有)、引导加载程序(如果有)、所有分区和未分区空间。

确保的内容/dev/sdx不会改变。如果读取时内容发生变化,则可能会得到不一致的图像。如果将 USB 上的数据想象成一张图片,不一致的图像看起来有点像全景失败现象。当您从连续捕获的、在此期间发生变化的片段构建大型图像时,就会发生这种情况。

没有持久性的实时系统通常不会修改启动设备,因此您甚至可以从内部复制此类操作系统。我猜您的情况下至少会安装一个具有写入权限的分区来提供持久性,这会使事情变得复杂。

幸运的是,您愿意在辅助 USB 驱动器上进入实时 Linux 发行版。这是一个非常好的主意。只需确保操作系统不会自动从您要读取的 USB 驱动器安装文件系统。


最终,您将把图像写回。为此,请恢复流程:读取图像并写入设备。示例(选择一个):

cat   /path/to/image   >/dev/sdy
pv    /path/to/image   >/dev/sdy
cp    /path/to/image    /dev/sdy
dd if=/path/to/image of=/dev/sdy bs=8M

笔记:

  • 写入错误的设备并丢失数据非常容易。无法保证/dev/sdx先前命名的设备/dev/sdx现在可用(这就是我在示例中使用的原因)。在运行命令之前,sdy请研究输出并检查两次。拿一只橡皮鸭,lsblk向它解释为什么您使用 eg/dev/sdc而不是/dev/sda
  • 如果/dev/sdy不存在而您碰巧还是对其进行了写入,那么您将创建一个占用文件系统空间的常规文件。
  • 写入映像可能不足以使当前操作系统识别已恢复的分区并创建等/dev/sdy1/dev/sdy2如果您需要立即访问它们,请使用partprobe。重新启动到相同或另一个操作系统(包括已恢复的操作系统)将设置正确,而无需明确调用partprobe

我知道您要将映像还原到同一个 USB 驱动器。如果是这样,则以下评论不适用。但一般来说,以下是一些潜在问题:

  • 较小的设备可能太小,无法容纳所有分区。如果有谷氨酰胺磷酸酶那么辅助(备份) GPT 将无法适应。
  • 更大的设备将能够容纳所有分区,但如果有 GPT,则辅助 GPT 将被写入错误的位置。它将保留从开始处的偏移量,而它应该放在最后。类似这样的程序gdisk可以修复此问题。
  • 具有不同逻辑扇区大小的设备将导致分区表与数据的实际布局不匹配。比较我的这个答案

相关内容