将正在运行的文件系统克隆到映像文件

将正在运行的文件系统克隆到映像文件

如何将正在运行的 Linux 文件系统 (Debian 10) 克隆到文件.img?我想将其闪存到另一个 SSD,并希望新系统能够以完全相同的方式运行。 Clonezilla 不适合我。新机器的硬件将完全相同。

答案1

您可以使用 dd 或 ddrescue 甚至 cat 将整个块设备复制为映像(假设目标是 /dev/sdb)

$ dd if=/dev/sda of=/mnt/master.img
(...)
$ dd if=/mnt/master.img of=/dev/sdb

它应该可以工作,因为您将拥有整个分区表引导扇区和文件系统本身 1 对 1 复制到新介质上。它还将克隆整个分区表和主驱动器的结构。

该映像不是 iso,您不应该这样想。简而言之,您的驱动器和随后的映像将包含整个驱动器结构:

|<-- sda ------------------------------------------------------------->|
|                            |<-- sda1 --->|<-- sda2 --->|<-- sdaN --->|
+--+--+--+--+--+--+--+--+--+-+=============+=============+...==========+
| MBR, part.table, boot.sect | partition 1 | partition 2 | partition n |
+--+--+--+--+--+--+--+--+--+-+=============+=============+...==========+

你的新驱动器也会有它。

除了 root 权限之外,您不需要任何花哨的东西来复制主设备并写入目标块设备。

您还可以制作系统分区的映像(假设它是/dev/sda1),在目标驱动器上制作一个新的分区表,确保您的系统分区至少与映像一样大,然后将 sda1.img 复制到 /dev /sdb1 并使其可使用您选择的启动管理器启动。但这需要更多工作,尤其是在像您这样的情况下。

-- 假设您只需要第一个分区,如评论中所述,您还可以复制 /dev/sda 的第一部分,其中包含分区表/引导加载程序 + 第一个分区 (/dev/sda1) 并将其复制到您的目的地。

$ dd if=/dev/sda of=/mnt/master1.img bs=1M count=7600
(...)
$ dd if=/mnt/master1.img of=/dev/sdb
|<-- sda -----------------------------------
|                            |<-- sda1 --->|
+--+--+--+--+--+--+--+--+--+-+=============+
| MBR, part.table, boot.sect | partition 1 |
+--+--+--+--+--+--+--+--+--+-+=============+

分区表会有些错误,因为它会包含不存在的分区,将来可能需要修复,但它会起作用。它并不优雅,但会起作用。

答案2

做一个备份Bacula例如TimeVaultTimeshift甚至Clonezilla应该能够进行正确的备份)到 NAT/USB。然后在新机器上从 LiveCD/LiveUSB 启动,并且恢复从备份中。

答案3

该程序乌科普,您可以找到它作为 apt 软件包apt install ukopp。它是一个 GUI,可将您的系统/文件备份/存储到外部驱动器(通常是 USB)。从那里您应该能够使用 USB 上的映像来“刷新”您的其他 SSD。

答案4

克隆整个驱动器、包含数据的分区或驱动器上的操作系统的最佳方法是命令dd

在我看来,dd这是设备/分区克隆/备份的最佳选择。

dd将一点一点地克隆一切。

dd在开始试验和尝试不同的工具之前,如果可以的话,我会使用 将该设备完整备份/克隆到另一个设备,并检查备份/克隆是否有效。

如果您的整个设备是加密的luks个例子,您可以进行整个克隆并刷新到您的新设备,这也可以!

如果您使用已安装的fuse/sshfs,您也可以直接备份/克隆到此网络文件夹。

您可以列出所有块设备lsblk

例子:

  1. 如果您的驱动器是 /dev/sda 并且您想在目录或存储上存储/备份/克隆
dd if=/dev/sda of=/home/user/osbkp.img bs=1M status=progress

你不需要名称.img有可能os123.bkp

  1. 将正在运行的系统实时克隆到目标驱动器,而无需创建映像。

源是/dev/sda,目标是/dev/sdb

dd if=/dev/sda of=/dev/sdb bs=1M status=progress

有时,您创建新的备份/克隆到新驱动器,但无法从此设备启动,而是使用 dd 重试(没有任何方法 100% 有效)

  1. 将映像克隆到新驱动器,其中目标是 /dev/sdb
dd if=/home/user/osbkp.img of=/dev/sdb bs=1M status=progress
  1. 克隆给定分区
dd if=/dev/sda1 of=/home/user/part1.img bs=1M status=progress

解释:

if=输入/源

of=输出/目标

bs=复制的块大小 有不同的块大小可以使用,我更喜欢 1MB,您可以使用此设置加快或减慢进程,您必须自己找到最佳选项

状态=进度 实时状态

  1. 如果您使用 fat* 作为存储,您可以拆分文件,也请查看该帖子:

将 dd 映像分解为多个文件

在 FAT32 驱动器上使用 dd 创建 80GB 映像

您必须牢记以下几点:

0。dd 将克隆该设备的所有内容。

你的驱动器是/dev/sda,你克隆这个

有5个分区

/dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5

您将从 /dev/sda 获得一个文件,其中包含所有这些分区、mbr、gpt 等。

1.您可以克隆到每个驱动器/存储

  • 您可以从硬盘克隆到 USB,或从 USB 克隆到硬盘等,然后从新设备运行克隆的操作系统

2.您运行的目标设备必须具有相同的尺寸或必须更大

  • 您无法将较大的设备克隆到较小的驱动器或仅克隆分区的已用空间
  • 例子: 您要克隆的分区是 8 GB,但该分区上的操作系统只有 1 GB,因此您有 7 GB 的可用空间,您想要克隆以运行操作系统的目标是 4 GB,这是不可能的!您将使用 dd 将整个设备克隆到新驱动器,但无法调整其大小。

如果您克隆到更大的设备,您可以使用剩余空间创建一个新分区,并在新设备/操作系统上安装/使用它。

如果您尝试将剩余空间合并到给定分区,请务必小心!

3.最好的方法是使用实​​时系统或其他 Linux 系统,而不是插入驱动器并从目标克隆到源或从目标克隆到存储

4.每个设备都有其唯一的 uuid 和标签名称,如果您将驱动器 a 克隆到 b 并且您在一台电脑上有两个驱动器,并且您尝试使用标签名称或 uuid 启动其中一个,请检查 grub 或您的启动管理器会出现问题或者您启动了错误的操作系统。

您可以使用blkid和其他命令来检查这一点。

您可以更改它并生成新的 uuid、标签等,但要小心

5.您不需要格式化克隆映像将运行的驱动器,dd 将销毁/删除所有内容,并从给定的支持操作系统创建新的 mbr、gpt、格式、文件系统等

另一种方法是创建一个空白操作系统并复制您需要的所有文件夹和文件。

有很多这方面的教程。

检查如何创建 Linux 系统备份rsync

如何使用 Rsync 备份整个 Linux 系统

使用 rsync 进行完整系统备份

使用 dd 创建基本克隆并执行您的操作,但后来我的意思是最好仅克隆/复制已更改的文件。

在 GNU/LINUX 中一切都是文件。

相关内容