#!/bin/bash # === 변수 정의 === SNAP_NAME="rhel_root_snap" SNAP_SIZE="10G" VG_NAME="rhel" LV_NAME="root" LOGFILE="/var/log/pre_upgrade_backup.log" DATE=$(date +%F_%T) BOOT_BACKUP="/backup/boot_backup_$DATE" EFI_BACKUP="/backup/efi_backup_$DATE" RESTORE_SCRIPT="/backup/restore_from_snapshot.sh" echo "[*] 시작: 업그레이드 대비 스냅샷 및 백업 ($DATE)" | tee -a $LOGFILE # === 1. 백업 디렉토리 생성 === mkdir -p "$BOOT_BACKUP" "$EFI_BACKUP" /backup echo "[+] 백업 디렉토리 생성 완료" | tee -a $LOGFILE # === 2. /boot 및 /boot/efi 백업 === cp -a /boot/* "$BOOT_BACKUP/" cp -a /boot/efi/* "$EFI_BACKUP/" echo "[+] /boot 및 /boot/efi 백업 완료" | tee -a $LOGFILE # === 3. LVM 스냅샷 생성 === lvcreate --size "$SNAP_SIZE" --snapshot --name "$SNAP_NAME" "/dev/$VG_NAME/$LV_NAME" >> $LOGFILE 2>&1 if [ $? -eq 0 ]; then echo "[+] LVM 스냅샷 생성 성공: $SNAP_NAME" | tee -a $LOGFILE else echo "[!] LVM 스냅샷 생성 실패!" | tee -a $LOGFILE exit 1 fi # === 4. 복원 스크립트 생성 === cat < "$RESTORE_SCRIPT" #!/bin/bash echo "[*] LVM 스냅샷 복원 중..." lvm lvchange -ay lvconvert --merge /dev/$VG_NAME/$SNAP_NAME echo "[+] 복원이 완료되었습니다. 재부팅 후 원래 상태로 되돌아갑니다." EOF chmod +x "$RESTORE_SCRIPT" echo "[+] 복원 스크립트 생성 완료: $RESTORE_SCRIPT" | tee -a $LOGFILE echo "[✔] 완료: 시스템 롤백 대비 작업이 모두 완료되었습니다!" | tee -a $LOGFILE