我了解到,clonezilla
当磁盘被加密时,诸如此类的工具不能省略空闲块,这是一个大问题,因为备份驱动器总是需要至少与源驱动器具有相同的大小 - 即使后者包含大部分可用空间!这是不切实际的,而不是备份应该如何工作。
让我们假设一个标准的 Linux 安装具有这样的分区结构(加密,LVM 上的 LUKS)。如何创建可引导的、基于文件的备份?
想法:用于cp -a
将所有文件从源复制到备份驱动器。
=>如何从终端重现分区结构?是否有适用于这项工作的 Linux 内置工具?并且会cp
复制当前打开/正在使用的文件(热传输)?
显然,这个想法是创建一个纤细而时尚的 Bash 脚本,理想情况下,它可以直接从任何正在运行的源系统运行:
- Creating backup -
1.) Mount empty USB flash drive to running source system
2.) Run Bash script (hot transfer of all files and partition structure)
3.) Bootable, file-based backup is created
- Restoring backup -
1.) Mount backup USB flash drive to empty host machine
2.) Boot the backup system
3.) Run Bash script (partitioning of host drive, hot-transfer of all files)
...finished! Reboot, remove backup USB flash drive, enjoy restored system.
注意:如果我是正确的,生成的备份将不会被加密。但这似乎是一个必要的权衡,以便cp
在未锁定的系统中使用,从而避免创建这些巨大的逐位图像/克隆。另外,之后总是可以添加加密。
事实证明,这
rsync
是选择的完美工具。它支持从正在运行的系统中完整和热传输整个文件系统:rsync -avxHAX / /dev/[backup_drive]/
加密/解密问题通过预先解锁加密磁盘来解决:
cryptsetup luksOpen /dev/[source_drive] && rsync -avxHAX / /dev/[backup_drive]/
剩下的任务是重现范围之外
rsync
的所有内容,即文件系统之外的内容,即包含引导加载程序和分区表的引导扇区(= 驱动器上的前 512 个字节)。为此,dd
或者ddrescue
可以使用:cryptsetup luksOpen /dev/[source_drive] && rsync -avxHAX / /dev/[backup_disk]/ && dd if=/dev/[source_drive] of=/dev/[backup_drive] bs=446 count=1
此处
bs=446
使用 ,而不是bs=512
假设备份驱动器和分区将具有不同的大小,因此省略了分区表和签名字节。这应该会导致从终端完成完整、热传输(从正在运行的系统)、可引导、稀疏(基于文件)的Linux 磁盘备份。
要做的事:加密备份!