Last active
June 28, 2023 01:34
-
-
Save maxkagamine/0fda138ff67e4ad9fcad692fe852a168 to your computer and use it in GitHub Desktop.
Unraid user script to create backups of the flash drive and appdata on a schedule. An email is sent with the full command output if the cronjob fails.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#name=Backup flash and appdata | |
#description=Creates tarballs of the flash drive and appdata share. | |
#argumentDescription=Backup directory | |
#argumentDefault=/mnt/user/Backup/Sovngarde | |
#arrayStarted=true | |
#noParity=true | |
#clearLog=true | |
set -eo pipefail | |
shopt -s extglob | |
PATH="/usr/local/emhttp/webGui/scripts:$PATH" | |
cd "${1:-/mnt/user/Backup/Sovngarde}" | |
create_backup() { | |
# Usage: create_backup <name> <src> | |
local name=$1 | |
local src=$2 | |
local date; date=$(date -I) | |
local tarball="${name}_${date}.tgz" | |
echo "$src -> $tarball" | |
tar cvfz "$tarball" \ | |
--exclude-ignore .tarignore \ | |
--transform "s/^\./${name}/" \ | |
--show-stored-names \ | |
--totals \ | |
-C "$src" . | |
# Remove old backups | |
rm -fv "$name"_!("$date").tgz | |
} | |
run() { | |
echo "Backing up to $(pwd)" | |
create_backup flash /boot | |
create_backup appdata /mnt/user/appdata | |
# For testing error notification | |
if [[ $FAIL_ON_PURPOSE ]]; then | |
echo 'Task failed successfully.' >&2 | |
return 1 | |
fi | |
} | |
# Capture log for error report while still writing to stdout | |
# https://stackoverflow.com/a/16292136 | |
{ log=$(run 2>&1 | tee /dev/fd/5); } 5>&1 || err=$? | |
if (( err > 0 )); then | |
notify \ | |
-s "$(sed -n 's/^#name=//p' "${BASH_SOURCE[0]}") script failed" \ | |
-d "Exit code $err (logs below)" \ | |
-i 'alert' \ | |
-m "$log" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment