当针对真正的完整系统备份时,与基于文件的备份相比,磁盘映像备份(按要求)提供了显着的优势(详细信息如下)。
基于文件的备份磁盘/分区结构不保存;大多数情况下,完全恢复的过程是一个巨大的时间消耗者,实际上需要许多耗时的步骤(如系统重新安装);最后备份已安装的应用程序可能很棘手;映像磁盘备份避免了所有这些缺点,恢复过程是一次性的。
像clonezilla、fsarchiver这样的工具不适合这个问题,因为它们缺少一个或多个请求的功能。
提醒一下,luks加密分区不依赖于使用的文件系统 (ext3/ext4/etc.) 请记住,性能取决于所选的文件系统 (详细信息),还请注意btrfs (视频- 1 , video-2 ) 可能是一个非常好的选择,因为它的快照功能和数据结构。这只是一个额外的保护层,因为 btrfs 快照不是真正的备份!(经典快照驻留在同一分区上)。
附带说明一下,除了磁盘映像备份之外,我们可能还想对某些特定位置进行简单的文件同步备份,为了实现这一点,可以结合使用rsync / grsync(或btrfs-send,如果是 btrfs)等工具使用 cron(如果需要)和加密的备份目标(如 luks-partition/vault/truecrypt)。基于磁盘的备份工具,文件可以是:rsync的/ grsync,rsnapshot,cronopete,转储/恢复,时移,似曾相识DUP,systemback,freefilesync,realtimesync,luckybackup,vembu。
lsblk --fs
输出:
sda
是主盘 sda1/sda2
是加密分区crypt_sda1/crypt_sda2
虚拟(映射)未加密分区 sda
??sda1 crypto_LUKS f3df6579-UUID...
? ??crypt_sda1 ext4 bc324232-UUID... /mount-location-1
??sda2 crypto_LUKS c3423434-UUID...
??crypt_sda2 ext4 a6546765-UUID... /mount-location-2
Run Code Online (Sandbox Code Playgroud)
将原始 luks 磁盘/分区(sda
或sda1
)按原样加密到任何位置
dd if=/dev/sda1 of=/backup/location/crypted.img bs=128K status=progress
但请注意,使用 dd 映像挂载分区可能会导致备份完成时使用的文件的数据损坏,例如 sql 数据库、x 配置文件或正在编辑的文档, 为了保证数据完整性,建议关闭所有正在运行的应用程序和数据库的备份,我们还可以在创建后挂载映像并使用fsck
.#1 的缺点:备份大小、压缩和增量备份可能很棘手
此方法适用于未加密的磁盘或备份映射的 luks 未加密分区crypt_sda1/crypt_sda2
...加密的备份目标位置(如 luks-partition/vault/truecrypt)或加密的存档/映像,如果备份工具支持此类功能,建议使用.
dd if=/dev/mapper/crypt_sda1 of=/backup/location/un-encrypted-sda1.img bs=128K status=progress
但请注意,使用 dd 映像挂载分区可能会导致备份完成时使用的文件的数据损坏,例如 sql 数据库、x 配置文件或正在编辑的文档, 为了保证数据完整性,建议关闭所有正在运行的应用程序和数据库的备份,我们还可以在创建后挂载映像并使用fsck
.#2 的缺点:磁盘头、mbr、分区结构、uid 等没有保存完整备份需要额外的备份步骤(详细如下)
cryptsetup luksHeaderBackup /dev/sda1 --header-backup-file /backup/location/sda1_luks_heanders_backup
dd if=/dev/sda of=/backup/location/backup-sda.mbr bs=512 count=1
sfdisk -d /dev/sda > /location/backup-sda.sfdisk
dd
可以使用类似于以下命令的命令挂载完成的图像:
fdisk -l -u /location/image.img
kpartx -l -v /location/image.img
kpartx -a -v /location/image.img
cryptsetup luksOpen /dev/mapper/loop0p1 imgroot
mount /dev/mapper/imgroot /mnt/backup/