私はそれぞれ、少なくとも6つのdm-cryptパーティションを持つ複数のサーバーを持っています。 Luksヘッダーバックアップを常に安全な場所に保存するための自動化された方法があることを願っています。これまではヘッダーバックアップを手動で行ってきました。私の問題は、ハードドライブを交換したり別のシステムを変更したりするときに新しいluksヘッダーバックアップを実行するのを忘れる傾向があることです。
luksヘッダーのバックアップがあることを確認し、そうでない場合は、新しく作成する既存のスクリプトを探しています。誰かがそのようなスクリプトを書いたと仮定する必要があります。 (その必要性ははっきりしているようです。)
存在しない場合は、この目的のためにbashスクリプトを作成してみましょう。
私の手動コマンドは次のとおりです。
cryptsetup luksHeaderBackup /dev/sdXN --header-backup-file /path/to/backup/$mountpoint_luksHeader_$devUUID.img
ヘッダーイメージファイルのファイル名にマウントポイントとデバイスUUIDを含めたい。
起動に関して私が持っている唯一の手がかりは、すべてのデバイスを繰り返してタイプのパーティションを見つけ、そのマウントcrypt
ポイントとUUIDを見つける必要があることです。私はほとんどの情報がlsblkとblkidにあることを知っています。スクリプトで使用するために抽出する方法がわかりません。
編集:私の目標は、マウントポイントに基づいてファイル名をインテリジェントに指定することです。
各 crypto_LUKS デバイスには、1 つ以上の BTRFS サブボリュームが含まれています。たとえば、crypto_LUKSデバイスには、sysluks
次の4つのbtrfsサブボリュームが含まれています。
- @ルーツ
- @var_log
- @root_snapshots
- @var_log_snapshots
このコマンドは、lsblk
次の出力を提供します。ここで、マウントする最後のサブボリュームのみがマウントポイントとして表示されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
└─sda2 8:2 0 1.8T 0 part
└─sysluks 254:0 0 1.8T 0 crypt /var/log/.snapshots
/var/log/.snapshots
ルートデバイスのバックアップを含むファイルとして使用するのに理想的な名前ではありません。
このコマンドは、findmnt -t btrfs
特定のソース(/dev/mapper/sysluksなど)のすべてのマウントポイントを表示します。一部のローカルテストを実行すると、findmnt
システムの起動時に常にインストール順序に従ってソートされたリストが返されるようです。そのリストから最初のマウントポイントを選択すると、ファイル名を指定するのに役立ちますが、最後のマウントポイントも選択しますが、lsblk
これは理想的ではありません。
答え1
cd /path/to/backup/
lsblk --fs --output FSTYPE,UUID | grep crypto_LUKS | tr -s ' ' | cut -d ' ' -f2 | \
while read uuid; do
mntpoint=$(lsblk /dev/disk/by-uuid/$uuid --output MOUNTPOINT | sed 1,1d | head -n 1)
name="${mntpoint}_luksHeader_$uuid.img"
if [[ ! -e "$name" ]]; then
cryptsetup luksHeaderBackup /dev/disk/by-uuid/$uuid --header-backup-file $name
fi
done
バックアップパスを変更しても大丈夫でしょう。デバイスのマウントポイントが変更されると、複数のヘッダーバックアップが作成されることに注意してください。それ以外の場合は、すでにバックアップされているデバイスを無視します。
答え2
ループからこのスクリプトを呼び出すことができます。
https://github.com/stanclai/luks_backup
cronに追加します。
いくつかのメモ/考え:
- スクリプトが自動的に回転しない場合は、パスにバックアップ日付を追加することをお勧めします
/path/to/backup/$(date +%y%m%d)/$mountpoint_luksHeader_$devUUID.img
。mkdir -p /path/to/backup/$(date +%y%m%d)
/path/to/backup/
他のボリューム、好ましくはネットワークの場所になければなりません。バックアップしているのと同じディスク/ボリューム/サーバーにバックアップが存在しないようにします。問題が発生するとアクセスできないためです。 。- どちらの場合も、生成されたファイルをバックアップするには有機バックアップシステムを使用することをお勧めします。
乾杯:)