여러 파티션에 대해 luksHeaderBackup을 자동화하는 스크립트

여러 파티션에 대해 luksHeaderBackup을 자동화하는 스크립트

저는 각각 최소 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 장치에는 하나 이상의 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에 추가하십시오.

몇 가지 메모/생각:

  1. 스크립트가 자동으로 회전하지 않는 경우 경로에 백업 날짜를 추가하는 것이 좋습니다 /path/to/backup/$(date +%y%m%d)/$mountpoint_luksHeader_$devUUID.img.mkdir -p /path/to/backup/$(date +%y%m%d)
  2. /path/to/backup/다른 볼륨, 바람직하게는 네트워크 위치에 있어야 합니다. 백업 중인 동일한 디스크/볼륨/서버에 백업이 상주하는 것을 원하지 않습니다. 문제가 발생하면 액세스할 수 없기 때문입니다. .
  3. 두 경우 모두 생성된 파일을 백업하려면 유기적 백업 시스템을 사용하는 것이 좋습니다.

건배:)

관련 정보