Raspberry-Pi
如何在不備份/恢復現有數據的情況下加密外部磁碟?
我有一個未加密 ext4 的外部 USB 磁碟:
/dev/sda1 3.6T 2.9T 613G 83% /data
我希望加密這個磁碟而不失去數據。我將此磁碟從 Raspberry3 遷移到 Raspberry4,因為我現在希望加密更好的性能。
我閱讀了有關Filesystem 堆棧級加密和Block device-level encryption 的資訊,但似乎 LUKS 是最安全的和 Debian 標準。
我閱讀了本指南:
*警告!*以下命令將刪除您正在加密的分區上的所有數據。您將失去所有資訊!因此,請確保在鍵入以下任何命令之前將數據備份到外部源,例如 NAS 或硬碟。
# cryptsetup -y -v luksFormat /dev/xvdc
我無法將 4 TB 數據複製到另一個磁碟,因為我沒有這麼大容量的磁碟。
如何在不備份/恢復現有數據的情況下加密此磁碟?是否可以?
這是可能的,但對於所有就地轉換,都存在一定的數據失去風險。
要為 LUKS 標頭騰出空間,除非您打算使用外部標頭,否則您必須首先縮小文件系統(
resize2fs
如果它是 ext4)。對於 LUKS1,您應該將其縮小 2MiB。對於 LUKS2,您可以將其縮小 4M、16M 或最多 64M。如果您打算使用高級功能(dm-integrity),您可能需要進一步縮小它。除了縮小之外,如果磁碟分區佈局允許,您也可以使分區更大。
使用離線實用程序加密現有數據
cryptsetup-reencrypt
:(並非所有發行版都安裝,可能在單獨的包中,否則從原始碼獲取)# cryptsetup-reencrypt --new --type luks1 --reduce-device-size 2M /dev/sdXn Enter new passphrase: Verify passphrase: [A wild progress bar appears.]
使用
cryptsetup reencrypt
LUKS2 線上:# cryptsetup reencrypt --new --reduce-device-size 16M /dev/sdXn WARNING! ======== This will overwrite data on LUKS2-temp-2c9761be-a765-4349-aa0a-553203e534f1.new irrevocably. Are you sure? (Type uppercase yes): Enter passphrase for LUKS2-temp-2c9761be-a765-4349-aa0a-553203e534f1.new: Verify passphrase: [A wild progress bar appears.]
因此,只要在整個過程中沒有發生電源或電纜故障,這就行得通。
正如
cryptsetup-reencrypt
手冊頁所說:在使用此工具之前,請始終確保您有可靠的備份。