基于文件的加密 Linux 系统备份?

基于文件的加密 Linux 系统备份?

我了解到,诸如此类的工具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 磁盘备份从终端完成。

待办事项:加密备份!

相关内容