磁盘/分区备份
有哪些备份选项和良好实践可以实现可靠且易于使用的完整系统备份?
具有以下要求:
- 实时备份
- 图像备份
- 加密备份
- 增量备份
- 轻松挂载/访问备份磁盘/文件
- 系统全备份,一键恢复
- 可以自动安排(使用 cron 或其他)
- 加密或经典备份源(luks、dm-crypt、ext3/ext4/btrfs)。
答案1
Linux系统备份
当瞄准真实的完整系统备份与基于文件的备份相比,磁盘映像备份(根据要求)提供了巨大的优势(详细信息如下)。
具有基于文件的备份不保存磁盘/分区结构;大多数情况下,完全恢复的过程会消耗大量时间,实际上需要许多耗时的步骤(例如系统重新安装);最后,备份已安装的应用程序可能会很棘手;映像磁盘备份避免了所有这些缺点,并且恢复过程是一次性的。
类似的工具克隆兹拉、fsarchiver不适合此问题,因为它们缺少一个或多个请求的功能。
提醒一句,幸运加密分区不依赖于所使用的文件系统(ext3/ext4/等)。请记住,性能因所选文件系统而异(细节),还要注意BTFS(视频1,视频2)可能是一个非常好的选择,因为它的快照功能和数据结构。这只是一个额外的保护层,因为 btrfs 快照不是真正的备份! (经典快照驻留在同一分区上)。
作为旁注,在添加到磁盘映像备份我们可能想做一个简单的文件同步备份对于某些特定位置,为了实现这一点,可以使用诸如同步/同步(或者Btrfs 发送如果是 btrfs)可以与 cron(如果需要)和加密备份目标(如 luks-partition/vault/truecrypt)结合使用。基于文件的备份工具可以是:同步/同步,快照,克罗诺佩特,倾倒/恢复,时移,似曾相识,系统后台,自由文件同步,实时同步,幸运备份,文布。
注释
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
方法#1
将原始 luks 磁盘/分区(sda
或sda1
)加密备份到任何位置
- 同步/bdsync 管理器是一个令人惊叹的工具,可以通过快速块设备同步进行映像备份(完整/增量);这可以与直接在加密分区上的 luks 一起使用,增量备份在这种情况下也非常有效。该工具支持安装/压缩/网络等。
- DD:磁盘映像的经典方法,可以与类似的命令一起使用,
dd if=/dev/sda1 of=/backup/location/crypted.img bs=128K status=progress
但请注意,使用 dd 映像已安装的分区可能会导致备份完成时使用的文件的数据损坏,例如 sql 数据库、x 配置文件或正在编辑的文档,为了通过此类备份保证数据完整性,建议关闭所有正在运行的应用程序和数据库,我们还可以在创建映像后挂载映像并使用fsck
.
#1 的缺点:备份大小、压缩和增量备份可能很棘手
方法#2
此方法适用于未加密的磁盘或备份映射的 luks 未加密分区crypt_sda1/crypt_sda2
...加密的备份目标位置(如 luks-partition/vault/truecrypt)或加密的存档/映像(如果备份工具支持此类功能)建议使用。
- 维姆:免费/付费专业备份解决方案(仅限 Linux 命令行和 TUI),内核模块是开源的,这个工具不能用于第一种方法,可以加密备份,支持增量和挂载备份。
- 同步/bdsync 管理器与第一种方法相同,但备份是从未加密的映射分区 (crypt_sda1/crypt_sda2) 进行的。
- DD:磁盘映像的经典方法,可以与类似的命令一起使用,
dd if=/dev/mapper/crypt_sda1 of=/backup/location/un-encrypted-sda1.img bs=128K status=progress
但请注意,使用 dd 映像已安装的分区可能会导致备份完成时使用的文件的数据损坏,例如 sql 数据库、x 配置文件或正在编辑的文档,为了通过此类备份保证数据完整性,建议关闭所有正在运行的应用程序和数据库,我们还可以在创建映像后挂载映像并使用fsck
.
#2 的缺点:磁盘头、mbr、分区结构、uid 等未保存完整备份需要额外的备份步骤(详细信息如下)
- 备份 luks 标头:
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
- 备份磁盘uuid
笔记:
- 完成的图像
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/
备择方案:
- 巴雷奥斯:开源备份解决方案(演示视频)
- 杆状骨:开源备份解决方案(演示视频)
- 同步:具有增量功能的磁盘映像解决方案。
- 其他工具可以找到这里,这里,这里或者这里
- 有一个维基百科页面比较磁盘克隆软件
- Gartner对一些专业备份解决方案的分析是可以在这里找到
其他工具
- 安克诺斯备份可用于这两种方法,但它们的内核模块总是最近更新(不适用于当前/最近的内核版本),并且从 02/2020 开始安装备份不起作用。
- 部分克隆:由clonezilla使用,该工具仅备份磁盘使用的块,它支持镜像挂载,但不支持实时/热备份,也不支持加密/luks。
- 部分图像:带有 TUI 的 dd 替代方案,它支持实时/热备份,但无法安装映像,并且不支持 luks(但支持 ext4/btrfs)。
- 多克隆:非常好的实时/热备份映像解决方案,支持许多系统(但不是运气......)ext4等。支持网络,无法安装。
- 快照:使用rsync的快照文件备份系统。在许多发行版(如 mageia)中使用的备份作业是通过 cron 安排的,在后台运行时,备份状态不会自动可见。
- 同步/同步:使用 rsync 命令同步文件夹,grsync 是 gui...
- 克罗诺佩特:rsync 的文件备份替代方案(与现代解决方案相比,该应用程序的工作方式受到限制)
- 简单备份:带有托盘图标和增量功能的文件备份解决方案,备份到tars存档
- 时光倒流:用于基于文件的备份的python备份应用程序(该应用程序有很多未解决的问题)
- 暗影防护:具有安装功能的 acronis 替代方案...luks 支持并不明显。
- 达托:专业的备份解决方案,luks支持不明显,linux代理需要联网到备份服务器...内核模块在github上开源...界面是基于网络的,没有使用现代设计。
- FS存档器:实时/热映像备份解决方案,备份无法挂载。
- 倾倒:镜像备份系统,不支持挂载。
答案2
我只是添加这些,因为我很惊讶地发现 @intika 的答案不包括我最喜欢的。用他的术语来说:
方法#1:对于 btrfs,请查看 btrbk,它会自动拍摄快照、复制快照并对其进行加密。
方法#2:restic、borg 或重复。这些都可以做增量备份、加密和挂载。 (尽管后者刚刚获得了挂载功能 - 应该会在下一个版本中出现。) Duplicacy 具有很好的重复数据删除功能,并且除了标准文件系统命令之外不需要远程上的任何内容。