Add restore backup script
This commit is contained in:
parent
45a34c65c7
commit
9ebfc6fc93
1 changed files with 65 additions and 0 deletions
65
restore-backup.sh
Executable file
65
restore-backup.sh
Executable file
|
|
@ -0,0 +1,65 @@
|
|||
#!/bin/bash
|
||||
# Restore from Portable backup drive on a fresh Aurora install
|
||||
# Finds the drive, opens LUKS, mounts, and runs the restore script
|
||||
set -euo pipefail
|
||||
|
||||
bold() { echo -e "\033[1m$*\033[0m"; }
|
||||
red() { echo -e "\033[31m$*\033[0m"; }
|
||||
green() { echo -e "\033[32m$*\033[0m"; }
|
||||
|
||||
die() { red "ERROR: $*"; exit 1; }
|
||||
|
||||
[ "$(id -u)" -eq 0 ] || die "Run with sudo: sudo bash restore-backup.sh"
|
||||
|
||||
LUKS_NAME="backup-drive"
|
||||
MOUNT="/mnt/backup-drive"
|
||||
|
||||
# --- Find the drive ---
|
||||
# Try stable by-id path first (Seagate Portable), fall back to scanning for LUKS partitions
|
||||
DEVICE=""
|
||||
for dev in /dev/disk/by-id/usb-Seagate_Portable_NT3D9HDX-*-part1; do
|
||||
[ -e "$dev" ] && DEVICE="$dev" && break
|
||||
done
|
||||
|
||||
if [ -z "$DEVICE" ]; then
|
||||
bold "Seagate Portable not found by ID. Scanning for LUKS partitions..."
|
||||
for part in /dev/sd?1 /dev/nvme?n1p?; do
|
||||
[ -b "$part" ] || continue
|
||||
if cryptsetup isLuks "$part" 2>/dev/null; then
|
||||
echo " Found LUKS partition: $part"
|
||||
DEVICE="$part"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
[ -n "$DEVICE" ] || die "No backup drive found. Plug it in and try again."
|
||||
bold "Using device: $DEVICE"
|
||||
|
||||
# --- Open LUKS ---
|
||||
if [ ! -e "/dev/mapper/$LUKS_NAME" ]; then
|
||||
echo ""
|
||||
bold "Enter your backup drive passphrase:"
|
||||
cryptsetup luksOpen "$DEVICE" "$LUKS_NAME" || die "Failed to unlock drive"
|
||||
fi
|
||||
green "LUKS unlocked."
|
||||
|
||||
# --- Mount ---
|
||||
mkdir -p "$MOUNT"
|
||||
if ! mountpoint -q "$MOUNT"; then
|
||||
mount /dev/mapper/"$LUKS_NAME" "$MOUNT" || die "Failed to mount"
|
||||
fi
|
||||
green "Mounted at $MOUNT"
|
||||
|
||||
# --- Verify it's a backup drive ---
|
||||
if [ ! -d "$MOUNT/backups" ] || [ ! -f "$MOUNT/restore.sh" ]; then
|
||||
die "Drive doesn't look like a backup drive (missing backups/ or restore.sh)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
green "Backup drive ready."
|
||||
bold "Launching restore menu..."
|
||||
echo ""
|
||||
|
||||
# --- Run restore ---
|
||||
bash "$MOUNT/restore.sh"
|
||||
Loading…
Add table
Add a link
Reference in a new issue