我了解到,诸如此类的工具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
解锁系统内使用,从而避免创建这些巨大的逐位图像/克隆。此外,事后总是可以添加加密。
答案1
事实证明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 磁盘备份从终端完成。
待办事项:加密备份!