#!/bin/sh

offsite_uuid=609806ea-a86b-4459-ad65-8e2445cdc698
crypttab=$(grep '^backups' /etc/crypttab)
target_name=$(echo "$crypttab" | awk '{ print $1 }')
onsite_uuid=$(echo "$crypttab" | awk '{ print $2 }' | cut -d / -f 5)
key_file=$(echo "$crypttab" | awk '{ print $3 }')

if [ $(id -u) -ne 0 ]; then
    echo "This must be run as root." 1>&2
    exit 1
fi

if umount /backups; then
    if cryptsetup luksClose backups; then
        echo "Remove onsite disk and insert offsite disk."
        while [ \! -e /dev/disk/by-uuid/$offsite_uuid ]; do
            sleep 1
        done
        if cryptsetup --key-file $key_file luksOpen /dev/disk/by-uuid/$offsite_uuid $target_name; then
            if mount /backups; then
                perform-backup
                umount /backups || exit 1
            fi
            cryptsetup luksClose backups || exit 1
        fi
        echo "Remove offsite disk and insert onsite disk."
        while [ \! -e /dev/disk/by-uuid/$onsite_uuid ]; do
            sleep 1
        done
        cryptsetup --key-file $key_file luksOpen /dev/disk/by-uuid/$onsite_uuid $target_name || exit 1
    fi
    mount /backups || exit 1
fi
