我目前有一个未加密的外部硬盘驱动器,用作我的加密(使用 LUKS)主机的备份。要更新我的备份,我只需登录到主机并 rsync 到我的外部硬盘驱动器。显然,对本来就值得加密的材料进行未加密的备份并不是一个好主意。但是,由于时间限制,如果没有 rsync 等工具的帮助,我无法定期更新备份。因此,我在外部驱动器上使用的任何加密方法都必须与 rsync 兼容。但是,我遇到了以下问题:
- 用户空间可堆叠加密方法(例如 EncFS 或 eCryptfs)似乎都占用大量空间,并且与 rsync 配合不佳。负责加密的隐藏文件似乎更改得足够频繁,以至于 rsync 最终不得不复制如此多的文件,以至于几乎不值得使用 rsync。
- luksipc 是一个选项,但它的最新文档告诉我改用 dm-crypt 的 cryptsetup-reencrypt 工具。遗憾的是,每当我在 arch wiki 上查找 cryptsetup-reencrypt 的相关文档时,我既不知道该做什么,也不知道它是否可以与 rsync 一起使用。 cryptsetup-reencrypt 工具似乎也很新,很难找到我级别的人可以阅读的文档。
- 普通的 LUKS 或类似的东西不是一个选择,因为前面提到的时间限制使我无法擦除驱动器并从头开始再次进行备份。
- 口是心非是一种选择,但它似乎无法加密外部硬盘驱动器上的任何未加密文件(即复制到的位置)。
总的来说,看起来 #2 可能是我实现加密外部驱动器并通过 rsync 使该驱动器保持最新的目标的最佳选择,但我真的不知道从哪里开始,而且我不太愿意接受这种可能性我可能必须在加密之前擦除驱动器。我错过了什么有用的东西吗?
答案1
现在cryptsetup
它支持非破坏性地将未加密的分区转换为加密的 LUKS 设备,方法如下:重新加密子命令。
假设您的外部驱动器可通过访问/dev/sdX
,并且当前文件系统位于/dev/sdXY
您需要首先缩小文件系统,为 LUKS 标头腾出空间,并为加密操作腾出一些暂存空间(32 MiB 有效)。确切的命令取决于您的文件系统,例如对于 ext4:
e2fsck -f /dev/sdXY
resize2fs /dev/sdXY NEWSIZE
(请注意,XFS 不支持收缩,因此您fstransform
首先需要它......)
触发加密:
cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
再次扩大文件系统:
cryptsetup open /dev/sdXY backup
resize2fs /dev/mapper/backup
cryptsetup close backup
(没有大小参数 resize2fs 使用所有可用空间)
由于您不更改现有文件系统的内容,因此您可以继续使用 rsync。而不是类似的东西
mount /dev/sdXY /mnt/backup
rsync -a /home /mnt/backup
umount /mnt/backup
你现在必须做类似的事情:
cryptsetup open /dev/sdXY backup
mount /dev/mapper/backup /mnt/backup
rsync -a /home /mnt/backup
umount /mnt/backup
既然你提到了你的时间限制:cryptsetup reencrypt
不一定像后面cryptsetup luksFormat
跟着一个新的 rsync 那么快。
上述方法的替代方法是切换到雷斯蒂奇满足您的备份需求。 Restic对所有备份进行加密,支持增量备份并且速度非常快。
如果您的外部驱动器足够大,您可以通过在新的子目录中初始化 Restic 存储库来开始使用 Restic。第一次 Restic 备份完成后,您可以删除旧的未加密备份文件。最后,你必须擦除可用空间销毁旧的未加密备份文件的任何痕迹。
答案2
我想我现在看到了主要问题,那就是:
“如何加密已有数据的驱动器?”
无论您使用 LUKS、eCryptFS、EncFS 还是基本上任何其他方式,只有一个安全的答案:
- 将数据备份到其他地方
- 加密驱动器(擦除/覆盖其上现在备份的现有数据)
- 将数据复制到现在加密的驱动器
- 验证您是否可以解密(解锁)驱动器,并且数据未更改
对于您的情况,如果您想在备份驱动器上使用 LUKS,并且如果备份驱动器未满一半, 你可以:
- 在一半的驱动器中创建一个空闲分区
- 使用 LUKS 加密空闲分区
- 将数据从未加密分区复制到 LUKS 分区
- 删除未加密的分区
- 然后将 LUKS 分区扩展到整个驱动器...
但是这些分区缩小和扩大操作之一很可能需要移动数据,为了安全起见,您应该首先进行备份,因此无论如何您都只能执行前面的“备份数据”步骤。
如果您正在考虑使用 LUKS 就地加密解决方案(lukspic 或 cryptsetup-reencrypt),情况也是如此 - 如果是重要数据,请先进行备份。
- 由于这已经是备份驱动器,您也许可以使用原始驱动器作为伪备份,只需擦除整个驱动器,使用 LUKS,然后从原始驱动器进行全新备份
或者,如果您不关心数据是否会被删除,那么请继续尝试就地加密解决方案,或者来回移动分区,如果出现问题并且所有内容都被删除,请不要感到震惊。