Cruise5 Asked: 2022-07-07 18:47:26 +0800 CST2022-07-07 18:47:26 +0800 CST 2022-07-07 18:47:26 +0800 CST 将正在运行的文件系统克隆到图像文件 772 如何将正在运行的 Linux 文件系统 (Debian 10) 克隆到.img文件中?我想将其闪存到另一个 SSD 并希望新系统运行完全相同。Clonezilla 对我不起作用。新机器硬件将完全相同。 linux filesystems 5 个回答 Voted Best Answer tansy 2022-07-13T12:24:18+08:002022-07-13T12:24:18+08:00 您可以使用 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 | +--+--+--+--+--+--+--+--+--+-+=============+ 分区表会有些错误,因为它将包含不存在的分区,将来可能需要修复,但它会起作用。它并不优雅,但会起作用。 White Owl 2022-07-07T19:08:29+08:002022-07-07T19:08:29+08:00 将备份(例如,使用Bacula, TimeVault,甚至应该能够进行正确的备份)到 NAT/USB。然后在新机器上从 LiveCD/LiveUSB 启动,然后从备份中恢复。TimeshiftClonezilla InjectedScript 2022-07-07T19:44:00+08:002022-07-07T19:44:00+08:00 程序ukopp,您可以在 apt 包中找到它apt install ukopp。它是一个 GUI,可以将您的系统/文件备份/存储到外部驱动器,通常是 USB。从那里您应该能够使用 USB 上的映像“闪存”您的其他 SSD。 Blockchain Office 2022-07-14T06:38:15+08:002022-07-14T06:38:15+08:00 克隆整个驱动器、带有数据的分区或驱动器上的操作系统的最佳方法是dd命令。 在我看来dd,最适合克隆/备份设备/分区。 dd将逐位克隆所有内容。 在您开始试验和尝试不同的工具之前dd,如果您可以选择,我会使用 将设备完整备份/克隆到另一个设备,并检查备份/克隆是否有效。 例如,如果您的整个设备都被加密,luks您可以进行整个克隆并闪存到您的新设备,这也可以! 如果你使用挂载的 fuse/sshfs,你也可以直接备份/克隆到这个网络文件夹。 您可以列出所有块设备lsblk 例子: 如果您的驱动器是 /dev/sda 并且您想在目录或存储上存储/备份/克隆 dd if=/dev/sda of=/home/user/osbkp.img bs=1M status=progress 你不需要name.img它也可以是os123.bkp 在不创建映像的情况下将正在运行的系统实时克隆到目标驱动器。 源是 /dev/sda,目标是 /dev/sdb dd if=/dev/sda of=/dev/sdb bs=1M status=progress 有时您创建新的备份/克隆到您的新驱动器,但您无法从该设备启动,而不是使用 dd 重试(没有 100% 有效) 将映像克隆到新驱动器,其中目标是 /dev/sdb dd if=/home/user/osbkp.img of=/dev/sdb bs=1M status=progress 克隆给定的分区 dd if=/dev/sda1 of=/home/user/part1.img bs=1M status=progress 解释: 如果=输入/源 of=输出/目标 bs=复制 的块大小 可以使用不同的块大小我更喜欢 1MB,您可以使用此设置加快或减慢处理速度,您必须自己找到最佳选择 status=progress 实时状态 如果您使用 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,但分区上的操作系统只有 1GB,因此您有 7 GB 的可用空间,您要克隆运行操作系统的目标是 4GB,这是不可能的!您将使用 dd 将整个设备克隆到您无法调整大小的新驱动器。 如果您克隆到更大的设备,您可以使用剩余空间创建一个新分区并在您的新设备/操作系统上安装/使用它。 如果您尝试将剩余空间合并到给定的分区,请小心! 3.最好的方法是使用 live 系统或其他 linux 系统,而不是插入驱动器并从目标到源或从目标到存储克隆 4.每个设备都有它唯一的 uuid 和标识设备的标签名称,如果您将驱动器 a 克隆到 b,并且您在一台 pc 中拥有两个驱动器,并且您尝试使用标签名称或 uuid 引导其中一个驱动器,请检查 grub 或您的bootmanager 你会遇到问题或者你启动了错误的操作系统。 您可以使用blkid其他命令进行检查。 您可以更改它并生成新的 uuid、标签等。但要小心 5.您不需要格式化您的克隆映像将运行的驱动器 dd 将销毁/删除所有内容并从给定的支持操作系统创建新的 mbr、gpt、格式、文件系统等 另一种方法是创建一个空白操作系统并复制您需要的所有文件夹和文件。 有很多教程。 检查如何使用创建 linux 系统备份rsync 如何使用 Rsync 备份整个 Linux 系统 使用 rsync 进行完整系统备份 用 dd 创建你的基本克隆并做你的事情,但后来我的意思是最好只克隆/复制更改的文件。 在 GNU/LINUX 中,一切都是文件。 dirkt 2022-07-14T09:12:57+08:002022-07-14T09:12:57+08:00 我一般来说,你不能克隆一个正在运行的文件系统,因为你会得到不一致的数据。某些更改可能仍在内存中,即使您sync,也可能会出现其他更改。 但是,如果您的文件系统支持快照(例如在 中btrfs),您可以制作文件系统当前状态的快照,让系统在原始“分支”上运行,然后克隆静态快照。 澄清我的目标:我在一块小板上安装了 32 位 Debian 10。它正在运行一些定制的应用程序。我想对 .img 文件进行一些更改并创建一个。 因此,请尝试卸载您进行更改的文件系统,然后克隆它们。这在很大程度上取决于您拥有哪些文件系统、哪些挂载点、更改在哪里、根文件系统是否有更改,以及您的常规设置。无法笼统地回答。
您可以使用 dd 或 ddrescue 甚至 cat 将整个块设备复制为映像(假设目标是 /dev/sdb)
它应该可以工作,因为您将拥有整个分区表引导扇区,并且文件系统本身将 1 对 1 复制到新介质上。它还将克隆整个分区表和主驱动器的结构。
这张图片不是iso,你不应该这样想。简而言之,您的驱动器和随后的图像将包含整个驱动器结构:
您的新驱动器也将拥有它。
除了 root 权限之外,您不需要任何花哨的东西来复制您的主设备并写入目标块设备。
您还可以制作系统分区的映像(假设是 /dev/sda1),在目标驱动器上创建一个新的分区表,确保您的系统分区至少与映像一样大,然后将 sda1.img 复制到 /dev /sdb1 并使用您选择的引导管理器使其可引导。但它的工作量更大,尤其是在像你这样的场景中。
- 假设您只需要第一个分区,如评论中所述,您还可以复制 /dev/sda 的第一部分,包含分区表/引导加载程序 + 第一个分区 (/dev/sda1) 并将其复制到您的目的地。
分区表会有些错误,因为它将包含不存在的分区,将来可能需要修复,但它会起作用。它并不优雅,但会起作用。
将备份(例如,使用
Bacula
,TimeVault
,甚至应该能够进行正确的备份)到 NAT/USB。然后在新机器上从 LiveCD/LiveUSB 启动,然后从备份中恢复。Timeshift
Clonezilla
程序ukopp,您可以在 apt 包中找到它
apt install ukopp
。它是一个 GUI,可以将您的系统/文件备份/存储到外部驱动器,通常是 USB。从那里您应该能够使用 USB 上的映像“闪存”您的其他 SSD。克隆整个驱动器、带有数据的分区或驱动器上的操作系统的最佳方法是
dd
命令。在我看来
dd
,最适合克隆/备份设备/分区。dd
将逐位克隆所有内容。在您开始试验和尝试不同的工具之前
dd
,如果您可以选择,我会使用 将设备完整备份/克隆到另一个设备,并检查备份/克隆是否有效。例如,如果您的整个设备都被加密,
luks
您可以进行整个克隆并闪存到您的新设备,这也可以!如果你使用挂载的 fuse/sshfs,你也可以直接备份/克隆到这个网络文件夹。
您可以列出所有块设备
lsblk
例子:
你不需要name.img它也可以是os123.bkp
源是 /dev/sda,目标是 /dev/sdb
有时您创建新的备份/克隆到您的新驱动器,但您无法从该设备启动,而不是使用 dd 重试(没有 100% 有效)
解释:
如果=输入/源
of=输出/目标
bs=复制 的块大小 可以使用不同的块大小我更喜欢 1MB,您可以使用此设置加快或减慢处理速度,您必须自己找到最佳选择
status=progress 实时状态
将 dd 图像分解为多个文件
在 FAT32 驱动器上使用 dd 创建 80GB 映像
您必须牢记以下几点:
0. dd 将克隆此设备的所有内容。
你的驱动器是
/dev/sda
,你克隆这个有 5 个分区
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
/dev/sda5
您将从 /dev/sda 获得一个包含所有这些分区、mbr、gpt 等的文件。
1.您可以克隆到每个驱动器/存储
2.您的运行目标设备必须具有相同的大小或必须更大
如果您克隆到更大的设备,您可以使用剩余空间创建一个新分区并在您的新设备/操作系统上安装/使用它。
如果您尝试将剩余空间合并到给定的分区,请小心!
3.最好的方法是使用 live 系统或其他 linux 系统,而不是插入驱动器并从目标到源或从目标到存储克隆
4.每个设备都有它唯一的 uuid 和标识设备的标签名称,如果您将驱动器 a 克隆到 b,并且您在一台 pc 中拥有两个驱动器,并且您尝试使用标签名称或 uuid 引导其中一个驱动器,请检查 grub 或您的bootmanager 你会遇到问题或者你启动了错误的操作系统。
您可以使用
blkid
其他命令进行检查。您可以更改它并生成新的 uuid、标签等。但要小心
5.您不需要格式化您的克隆映像将运行的驱动器 dd 将销毁/删除所有内容并从给定的支持操作系统创建新的 mbr、gpt、格式、文件系统等
另一种方法是创建一个空白操作系统并复制您需要的所有文件夹和文件。
有很多教程。
检查如何使用创建 linux 系统备份
rsync
如何使用 Rsync 备份整个 Linux 系统
使用 rsync 进行完整系统备份
用 dd 创建你的基本克隆并做你的事情,但后来我的意思是最好只克隆/复制更改的文件。
在 GNU/LINUX 中,一切都是文件。
我一般来说,你不能克隆一个正在运行的文件系统,因为你会得到不一致的数据。某些更改可能仍在内存中,即使您
sync
,也可能会出现其他更改。但是,如果您的文件系统支持快照(例如在 中
btrfs
),您可以制作文件系统当前状态的快照,让系统在原始“分支”上运行,然后克隆静态快照。因此,请尝试卸载您进行更改的文件系统,然后克隆它们。这在很大程度上取决于您拥有哪些文件系统、哪些挂载点、更改在哪里、根文件系统是否有更改,以及您的常规设置。无法笼统地回答。