加密目前使用的外部硬碟驅動器,以便可以使用 rsync 對其進行更新?
我目前有一個未加密的外部硬碟驅動器,用作我的加密(使用 LUKS)主機的備份。要更新我的備份,我只需登錄到主機並 rsync 到我的外部硬碟驅動器。顯然,首先對值得加密的材料進行未加密備份是一個壞主意。但是,由於時間限制,如果沒有 rsync 之類的幫助,我無法定期更新我的備份。因此,我在外部驅動器上使用的任何加密方法都必須與 rsync 兼容。但是,我遇到了以下問題:
- 像 EncFS 或 eCryptfs 這樣的使用者空間可堆疊加密方法似乎都佔用了大量空間,並且與 rsync 不兼容。負責加密的隱藏文件似乎經常更改,以至於 rsync 最終不得不複製如此多的文件,以至於使用 rsync 幾乎不值得。
- luksipc 將是一個選項,但它的最新文件告訴我改用 dm-crypt 的 cryptsetup-reencrypt 工具。可悲的是,每當我在 arch wiki 上查找 cryptsetup-reencrypt 的相關文件時,我既不知道該怎麼做,也不知道它是否可以與 rsync 一起使用。cryptsetup-reencrypt 工具似乎也很新,以至於很難找到我級別的人可以閱讀的文件。
- 普通的 LUKS 或任何類似的東西都不是一種選擇,因為前面提到的時間限制使我無法擦除驅動器並從頭開始再次備份。
- 重複性可能是一種選擇,但它似乎無法加密外部硬碟驅動器上的任何未加密文件(即復製到的位置)。
總體而言,看起來#2 可能是我加密外部驅動器並使用 rsync 使該驅動器保持最新的目標的最佳選擇,但我真的不知道從哪裡開始,而且我對這種可能性不是很開放我可能必須在加密之前擦除驅動器。我錯過了什麼有用的東西嗎?
如今,它本身支持使用reencrypt 子命令
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。第一次 Restic 備份完成後,您可以刪除舊的未加密備份文件。最後,您必須擦除可用空間以破壞舊的未加密備份文件的任何痕跡。