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
|
# 7. rm /tmp/uuid
|
||||||
# 8. luksclose
|
# 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 {
|
function exit_success {
|
||||||
# Unmount /tmp/uuid
|
# Unmount /tmp/uuid
|
||||||
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
||||||
umount $BACKUP_DRIVE_MNT
|
umount $BACKUP_DRIVE_MNT
|
||||||
|
|
||||||
# luksClose
|
|
||||||
log "INFO" "luksClose $BACKUP_DRIVE_NAME"
|
|
||||||
cryptsetup luksClose $BACKUP_DRIVE_NAME
|
|
||||||
|
|
||||||
# Exit
|
# Exit
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
@@ -63,10 +24,6 @@ function exit_fail {
|
|||||||
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
log "INFO" "Unmounting $BACKUP_DRIVE_MNT"
|
||||||
umount $BACKUP_DRIVE_MNT
|
umount $BACKUP_DRIVE_MNT
|
||||||
|
|
||||||
# luksClose
|
|
||||||
log "INFO" "luksClose $BACKUP_DRIVE_NAME"
|
|
||||||
cryptsetup luksClose $BACKUP_DRIVE_NAME
|
|
||||||
|
|
||||||
# Exit
|
# Exit
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@@ -99,6 +56,41 @@ function notify {
|
|||||||
sudo -E -u $USER notify-send "$LEVEL" "$MESSAGE"
|
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
|
# Create readonly snapshot
|
||||||
log "INFO" "Creating snapshot from $SOURCE_DIR as $SNAPSHOT_DIR/$SNAPSHOT_NAME"
|
log "INFO" "Creating snapshot from $SOURCE_DIR as $SNAPSHOT_DIR/$SNAPSHOT_NAME"
|
||||||
if [ -d $SNAPSHOT_DIR/$SNAPSHOT_NAME ]; then
|
if [ -d $SNAPSHOT_DIR/$SNAPSHOT_NAME ]; then
|
||||||
@@ -114,6 +106,7 @@ update_latest $SNAPSHOT_DIR $SNAPSHOT_NAME
|
|||||||
# Unlock backup drive
|
# Unlock backup drive
|
||||||
if [ -L /dev/disk/by-uuid/$BACKUP_DRIVE_UUID ]; then
|
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 luksOpen /dev/disk/by-uuid/$BACKUP_DRIVE_UUID $BACKUP_DRIVE_NAME --key-file=$BACKUP_DRIVE_PASSWORD
|
||||||
|
cryptsetup status /dev/mapper/$BACKUP_DRIVE_NAME
|
||||||
else
|
else
|
||||||
log "INFO" "Backup drive $BACKUP_DRIVE_UUID not found"
|
log "INFO" "Backup drive $BACKUP_DRIVE_UUID not found"
|
||||||
log "INFO" "Snapshot $SNAPSHOT_NAME completed successfully."
|
log "INFO" "Snapshot $SNAPSHOT_NAME completed successfully."
|
||||||
|
|||||||
Reference in New Issue
Block a user