Skip to content

Instantly share code, notes, and snippets.

@kidpixo
Created April 11, 2024 10:11
Show Gist options
  • Select an option

  • Save kidpixo/ab20a4f43a00d327d83705960eb3b16d to your computer and use it in GitHub Desktop.

Select an option

Save kidpixo/ab20a4f43a00d327d83705960eb3b16d to your computer and use it in GitHub Desktop.

Revisions

  1. kidpixo created this gist Apr 11, 2024.
    65 changes: 65 additions & 0 deletions crypted_backup_usb.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,65 @@
    #!/bin/bash
    check_backup_disk() {
    local -a EXTERNAL_DISK_PATHS=(
    "/dev/disk/by-id/usb-SOME_EXTERNAL_USB_XXXXXXXXXXXXXXX-0:0"
    "/dev/disk/by-id/usb-SOME_External_USB_3.0_XXXXXXXXXXXXXX-0:0"
    )
    CURRENT_DISK=""

    for path in "${EXTERNAL_DISK_PATHS[@]}"; do
    if [[ -e "$path" ]]; then
    CURRENT_DISK=$(basename "$path")
    break
    fi
    done
    }

    mount_external_backup_disks() {
    if [ -n "$CURRENT_DISK" ]; then
    echo "Current Disk : $CURRENT_DISK"
    echo "Decrytp $CURRENT_DISK-part2"
    echo "Activate LVM volume_backup (root,home,swap)"
    echo "mount /dev/volume_backup/root to /mnt/backup"
    echo "mount /dev/volume_backup/home to /mnt/backup/home"
    echo "mount $CURRENT_DISK-part1 to /mnt/backup/boot"
    else
    echo "NO External Disk Present : STOPPING"
    fi
    }

    close_external_backup_disks() {
    if [ -n "$CURRENT_DISK" ]; then
    echo "Current Disk : $CURRENT_DISK"
    echo "Umount everything under /mnt/backup"
    echo "Deactivate volume_backup"
    echo "Close encrypted partition"
    else
    echo "NO External Disk Present : STOPPING"
    fi
    }

    rsync_backup(){
    if [[ -d "/mnt/backup" && -d "/mnt/backup/boot" && -d "/mnt/backup/home" && -n "$CURRENT_DISK" ]]; then
    echo "Current Disk : $CURRENT_DISK"
    echo "sync everything BUT /boot to $CURRENT_DISK"
    echo sudo rsync -aAXHl --delete --info=progress2 --human-readable --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot"} / /mnt/backup/
    echo sudo rsync -aAXHl --inplace --delete --info=progress2 --human-readable --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /boot/ /mnt/backup/boot
    echo "copy local backuped systemd-boot entries and fstab to backup disk"
    echo sudo cp $CURRENT_DISK/boot/loader/entries/*conf /mnt/backup/boot/loader/entries/
    echo sudo cp $CURRENT_DISK/etc/fstab /mnt/backup/etc/
    else
    # Actions to perform if any path does not exist or CURRENT_DISK is empty
    if [ ! -d "/mnt/backup" ]; then
    echo "/mnt/backup does not exist."
    fi
    if [ ! -d "/mnt/backup/boot" ]; then
    echo "/mnt/backup/boot does not exist."
    fi
    if [ ! -d "/mnt/backup/home" ]; then
    echo "/mnt/backup/home does not exist."
    fi
    if [ -z "$CURRENT_DISK" ]; then
    echo "CURRENT_DISK is empty."
    fi
    fi
    }