Add logging and error handling to backup script
Add much needed logging and error handling to make sure backups happen more consistently.
This commit is contained in:
@@ -10,50 +10,11 @@
|
||||
# 7. rm /tmp/uuid
|
||||
# 8. luksclose
|
||||
|
||||
# Backup info
|
||||
export BACKUP_DRIVE_UUID={{ disk.uuid }}
|
||||
export BACKUP_DRIVE_PASSWORD={{ disk.password }}
|
||||
export BACKUP_DRIVE_TMP_UUID=$(uuidgen)
|
||||
export BACKUP_DRIVE_NAME=luks-$BACKUP_DRIVE_TMP_UUID
|
||||
|
||||
# For notifications
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ notifications.user.uid }}/bus
|
||||
export USER={{ notifications.user.name }}
|
||||
|
||||
export SOURCE_DIR=${SOURCE_DIR:=/}
|
||||
# Fix basename / showing up as "/" -> change to "root"
|
||||
if [ $(basename $SOURCE_DIR) = / ]; then
|
||||
export SNAPSHOT_PREFIX=${SNAPSHOT_PREFIX:=root}
|
||||
else
|
||||
export SNAPSHOT_PREFIX=${SNAPSHOT_PREFIX:=$(basename $SOURCE_DIR)}
|
||||
fi
|
||||
# Set snapshot prefix based on basename
|
||||
export SNAPSHOT_TIME=$(date +"%y_%m_%d-%H.%M")
|
||||
export SNAPSHOT_NAME=$SNAPSHOT_PREFIX-$SNAPSHOT_TIME
|
||||
export SNAPSHOT_DIR=${SNAPSHOT_DIR:=/.snapshots}
|
||||
export LATEST=$SNAPSHOT_PREFIX-latest
|
||||
export BACKUP_DRIVE_MNT=/tmp/$BACKUP_DRIVE_TMP_UUID
|
||||
export BACKUP_DIR=${BACKUP_DIR:=$BACKUP_DRIVE_MNT/$(hostname)}
|
||||
|
||||
# Show snapshot settings
|
||||
echo "SOURCE_DIR" "$SOURCE_DIR"
|
||||
echo "SNAPSHOT_PREFIX" "$SNAPSHOT_PREFIX"
|
||||
echo "SNAPSHOT_TIME" "$SNAPSHOT_TIME"
|
||||
echo "SNAPSHOT_NAME" "$SNAPSHOT_NAME"
|
||||
echo "SNAPSHOT_DIR" "$SNAPSHOT_DIR"
|
||||
echo "LATEST" "$LATEST"
|
||||
echo "BACKUP_DRIVE_MNT" "$BACKUP_DRIVE_MNT"
|
||||
echo "BACKUP_DIR" "$BACKUP_DIR"
|
||||
|
||||
function exit_success {
|
||||
# Unmount /tmp/uuid
|
||||
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
||||
umount $BACKUP_DRIVE_MNT
|
||||
|
||||
# luksClose
|
||||
log "INFO" "luksClose $BACKUP_DRIVE_NAME"
|
||||
cryptsetup luksClose $BACKUP_DRIVE_NAME
|
||||
|
||||
# Exit
|
||||
exit 0
|
||||
}
|
||||
@@ -63,10 +24,6 @@ function exit_fail {
|
||||
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
||||
umount $BACKUP_DRIVE_MNT
|
||||
|
||||
# luksClose
|
||||
log "INFO" "luksClose $BACKUP_DRIVE_NAME"
|
||||
cryptsetup luksClose $BACKUP_DRIVE_NAME
|
||||
|
||||
# Exit
|
||||
exit 1
|
||||
}
|
||||
@@ -99,6 +56,41 @@ function notify {
|
||||
sudo -E -u $USER notify-send "$LEVEL" "$MESSAGE"
|
||||
}
|
||||
|
||||
# Backup info
|
||||
export BACKUP_DRIVE_UUID={{ disk.uuid }}
|
||||
export BACKUP_DRIVE_PASSWORD={{ disk.password }}
|
||||
export BACKUP_DRIVE_TMP_UUID=$(uuidgen)
|
||||
export BACKUP_DRIVE_NAME=luks-$BACKUP_DRIVE_UUID
|
||||
|
||||
# For notifications
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ notifications.user.uid }}/bus
|
||||
export USER={{ notifications.user.name }}
|
||||
|
||||
export SOURCE_DIR=${SOURCE_DIR:=/}
|
||||
# Fix basename / showing up as "/" -> change to "root"
|
||||
if [ $(basename $SOURCE_DIR) = / ]; then
|
||||
export SNAPSHOT_PREFIX=${SNAPSHOT_PREFIX:=root}
|
||||
else
|
||||
export SNAPSHOT_PREFIX=${SNAPSHOT_PREFIX:=$(basename $SOURCE_DIR)}
|
||||
fi
|
||||
# Set snapshot prefix based on basename
|
||||
export SNAPSHOT_TIME=$(date +"%y_%m_%d-%H.%M")
|
||||
export SNAPSHOT_NAME=$SNAPSHOT_PREFIX-$SNAPSHOT_TIME
|
||||
export SNAPSHOT_DIR=${SNAPSHOT_DIR:=/.snapshots}
|
||||
export LATEST=$SNAPSHOT_PREFIX-latest
|
||||
export BACKUP_DRIVE_MNT=/tmp/$BACKUP_DRIVE_TMP_UUID
|
||||
export BACKUP_DIR=${BACKUP_DIR:=$BACKUP_DRIVE_MNT/$(hostname)}
|
||||
|
||||
# Show snapshot settings
|
||||
echo "SOURCE_DIR" "$SOURCE_DIR"
|
||||
echo "SNAPSHOT_PREFIX" "$SNAPSHOT_PREFIX"
|
||||
echo "SNAPSHOT_TIME" "$SNAPSHOT_TIME"
|
||||
echo "SNAPSHOT_NAME" "$SNAPSHOT_NAME"
|
||||
echo "SNAPSHOT_DIR" "$SNAPSHOT_DIR"
|
||||
echo "LATEST" "$LATEST"
|
||||
echo "BACKUP_DRIVE_MNT" "$BACKUP_DRIVE_MNT"
|
||||
echo "BACKUP_DIR" "$BACKUP_DIR"
|
||||
|
||||
# Create readonly snapshot
|
||||
log "INFO" "Creating snapshot from $SOURCE_DIR as $SNAPSHOT_DIR/$SNAPSHOT_NAME"
|
||||
if [ -d $SNAPSHOT_DIR/$SNAPSHOT_NAME ]; then
|
||||
@@ -114,6 +106,7 @@ update_latest $SNAPSHOT_DIR $SNAPSHOT_NAME
|
||||
# Unlock backup drive
|
||||
if [ -L /dev/disk/by-uuid/$BACKUP_DRIVE_UUID ]; then
|
||||
cryptsetup luksOpen /dev/disk/by-uuid/$BACKUP_DRIVE_UUID $BACKUP_DRIVE_NAME --key-file=$BACKUP_DRIVE_PASSWORD
|
||||
cryptsetup status /dev/mapper/$BACKUP_DRIVE_NAME
|
||||
else
|
||||
log "INFO" "Backup drive $BACKUP_DRIVE_UUID not found"
|
||||
log "INFO" "Snapshot $SNAPSHOT_NAME completed successfully."
|
||||
|
||||
Reference in New Issue
Block a user