Remove backup-*. Add do-backup more generic script.
This commit is contained in:
parent
e579684435
commit
6de645a2c3
3 changed files with 100 additions and 134 deletions
57
backup-gv0
57
backup-gv0
|
|
@ -1,57 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Version: 0.1.0
|
||||
# Copyright (c) 2023:
|
||||
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
|
||||
# Licensed under the terms of the GNU General Public License version 3.
|
||||
|
||||
BACKUP_MOUNTPOINT="/localdata"
|
||||
BACKUP_DESTDIR="$BACKUP_MOUNTPOINT/backups/gv0"
|
||||
RSYNC_SOURCE="/storage/gv0/" # The / on the end is required.
|
||||
RSYNC_FILTER=()
|
||||
RSYNC_OPTIONS=( '-a' '-H' '-A' '--timeout=300' '--partial' '--partial-dir=.rsync-tmp' '--delete-delay' '--delay-updates' )
|
||||
RSYNC_OPTIONS_VERBOSE=( '--verbose' '--stats' '--human-readable' )
|
||||
RSYNC_LOG="/tmp/${BASH_SOURCE##*/}-$$.log"
|
||||
|
||||
# Only allow one copy of the script to run at any time.
|
||||
# shellcheck disable=SC2154
|
||||
if [[ "$FLOCK" != "$0" ]]; then
|
||||
exec env FLOCK="$0" flock -e -n "$0" "$0" "$@" || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE##*/}" "flock execution error" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# Source the mail configuration.
|
||||
source /etc/mail.conf "backups" 2>/dev/null || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE##*/}" "Failed to source /etc/mail.conf" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure BACKUP_MOUNTPOINT is a mountpoint.
|
||||
mountpoint "$BACKUP_MOUNTPOINT" >/dev/null 2>&1 || {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
'$BACKUP_MOUNTPOINT' is not a mountpoint.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Do the backup.
|
||||
rsync "${RSYNC_OPTIONS[@]}" "${RSYNC_OPTIONS_VERBOSE[@]}" "${RSYNC_FILTER[@]}" "$RSYNC_SOURCE" "$BACKUP_DESTDIR" >"$RSYNC_LOG" 2>&1
|
||||
ERR="$?"
|
||||
|
||||
# Send a notification and mail a log if there were errors.
|
||||
(( ERR != 0 )) && (( ERR != 10 )) && (( ERR != 24 )) && {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
Exit code: $ERR
|
||||
Output:
|
||||
$(< "$RSYNC_LOG")
|
||||
EOF
|
||||
rm -f "$RSYNC_LOG"
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -f "$RSYNC_LOG"
|
||||
|
||||
exit 0
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Version: 0.1.0
|
||||
# Copyright (c) 2023:
|
||||
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
|
||||
# Licensed under the terms of the GNU General Public License version 3.
|
||||
|
||||
BACKUP_MOUNTPOINT="/localdata"
|
||||
BACKUP_DESTDIR="$BACKUP_MOUNTPOINT/backups/mirrors"
|
||||
RSYNC_SOURCE="slackware.uk::mirrors/" # The / on the end is required.
|
||||
RSYNC_FILTER=( \
|
||||
'--include=/absolute/***' \
|
||||
'--include=/csb/***' \
|
||||
'--include=/cumulative/***' \
|
||||
'--include=/freeslack/***' \
|
||||
'--include=/gfs/***' \
|
||||
'--include=/microlinux/***' \
|
||||
'--include=/msb/***' \
|
||||
'--include=/sarpi/***' \
|
||||
'--include=/slackonly/***' \
|
||||
'--include=/slackvirt/***' \
|
||||
'--include=/slackware/' \
|
||||
'--include=/slackware/slackware-pre-1.0-beta/***' \
|
||||
'--include=/slackware/slackware-1.01/***' \
|
||||
'--include=/slackwarearm/***' \
|
||||
'--include=/slacky/***' \
|
||||
'--include=/slaxbmc/***' \
|
||||
'--include=/slint/***' \
|
||||
'--include=/sls/***' \
|
||||
'--include=/studioware/***' \
|
||||
'--exclude=*' )
|
||||
RSYNC_OPTIONS=( '-a' '-H' '-A' '--contimeout=30' '--timeout=300' '--no-motd' '--partial' '--partial-dir=.rsync-tmp' '--delete-delay' '--delay-updates' )
|
||||
RSYNC_OPTIONS_VERBOSE=( '--verbose' '--stats' '--human-readable' )
|
||||
RSYNC_LOG="/tmp/${BASH_SOURCE##*/}-$$.log"
|
||||
|
||||
# Only allow one copy of the script to run at any time.
|
||||
# shellcheck disable=SC2154
|
||||
if [[ "$FLOCK" != "$0" ]]; then
|
||||
exec env FLOCK="$0" flock -e -n "$0" "$0" "$@" || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE##*/}" "flock execution error" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# Source the mail configuration.
|
||||
source /etc/mail.conf "backups" 2>/dev/null || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE##*/}" "Failed to source /etc/mail.conf" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure BACKUP_MOUNTPOINT is a mountpoint.
|
||||
mountpoint "$BACKUP_MOUNTPOINT" >/dev/null 2>&1 || {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
'$BACKUP_MOUNTPOINT' is not a mountpoint.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Do the backup.
|
||||
rsync "${RSYNC_OPTIONS[@]}" "${RSYNC_OPTIONS_VERBOSE[@]}" "${RSYNC_FILTER[@]}" "$RSYNC_SOURCE" "$BACKUP_DESTDIR" >"$RSYNC_LOG" 2>&1
|
||||
ERR="$?"
|
||||
|
||||
# Send a notification and mail a log if there were errors.
|
||||
(( ERR != 0 )) && (( ERR != 10 )) && (( ERR != 24 )) && {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
Exit code: $ERR
|
||||
Output:
|
||||
$(< "$RSYNC_LOG")
|
||||
EOF
|
||||
rm -f "$RSYNC_LOG"
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -f "$RSYNC_LOG"
|
||||
|
||||
exit 0
|
||||
100
do-backup
Executable file
100
do-backup
Executable file
|
|
@ -0,0 +1,100 @@
|
|||
#!/bin/bash
|
||||
# Version: 0.1.0
|
||||
# Copyright (c) 2023:
|
||||
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
|
||||
# Licensed under the terms of the GNU General Public License version 3.
|
||||
|
||||
# Base configuration.
|
||||
BACKUP_MOUNTPOINT="/localdata"
|
||||
RSYNC_OPTIONS=( '-a' '-H' '-A' '--timeout=300' '--partial' '--partial-dir=.rsync-tmp' '--delete-delay' '--delay-updates' )
|
||||
RSYNC_OPTIONS_VERBOSE=( '--verbose' '--stats' '--human-readable' )
|
||||
RSYNC_LOG="/tmp/${BASH_SOURCE[0]##*/}-$$.log"
|
||||
|
||||
# Sanity checks.
|
||||
(( $# != 1 )) || [[ -z "$1" ]] || [[ "$1" =~ ^(-h|-help|--help)$ ]] && {
|
||||
printf "%s: %s <%s>\\n" "Usage" "${BASH_SOURCE[0]}" "backup definition" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Get backup definition specific configuration.
|
||||
case "$1" in
|
||||
'gv0')
|
||||
BACKUP_DESTDIR="$BACKUP_MOUNTPOINT/backups/gv0"
|
||||
RSYNC_SOURCE="/storage/gv0/" # The / on the end is required.
|
||||
RSYNC_FILTER=()
|
||||
;;
|
||||
'mirrors')
|
||||
BACKUP_DESTDIR="$BACKUP_MOUNTPOINT/backups/mirrors"
|
||||
RSYNC_SOURCE="slackware.uk::mirrors/" # The / on the end is required.
|
||||
RSYNC_FILTER=( \
|
||||
'--include=/absolute/***' \
|
||||
'--include=/csb/***' \
|
||||
'--include=/cumulative/***' \
|
||||
'--include=/freeslack/***' \
|
||||
'--include=/gfs/***' \
|
||||
'--include=/microlinux/***' \
|
||||
'--include=/msb/***' \
|
||||
'--include=/sarpi/***' \
|
||||
'--include=/slackonly/***' \
|
||||
'--include=/slackvirt/***' \
|
||||
'--include=/slackware/' \
|
||||
'--include=/slackware/slackware-pre-1.0-beta/***' \
|
||||
'--include=/slackware/slackware-1.01/***' \
|
||||
'--include=/slackwarearm/***' \
|
||||
'--include=/slacky/***' \
|
||||
'--include=/slaxbmc/***' \
|
||||
'--include=/slint/***' \
|
||||
'--include=/sls/***' \
|
||||
'--include=/studioware/***' \
|
||||
'--exclude=*' )
|
||||
RSYNC_OPTIONS+=( '--contimeout=30' )
|
||||
;;
|
||||
*)
|
||||
printf "%s: %s: %s\\n" "${BASH_SOURCE[0]##*/}" "$1" "unknown backup definition" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Only allow one copy of the script to run at any time.
|
||||
# shellcheck disable=SC2154
|
||||
if [[ "$FLOCK" != "$0" ]]; then
|
||||
exec env FLOCK="$0" flock -e -n "$0" "$0" "$@" || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE[0]##*/}" "flock execution error" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
# Source the mail configuration.
|
||||
source /etc/mail.conf "backups" 2>/dev/null || {
|
||||
printf "%s: %s\\n" "${BASH_SOURCE[0]##*/}" "Failed to source /etc/mail.conf" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure BACKUP_MOUNTPOINT is a mountpoint.
|
||||
mountpoint "$BACKUP_MOUNTPOINT" >/dev/null 2>&1 || {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
'$BACKUP_MOUNTPOINT' is not a mountpoint.
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Do the backup.
|
||||
rsync "${RSYNC_OPTIONS[@]}" "${RSYNC_OPTIONS_VERBOSE[@]}" "${RSYNC_FILTER[@]}" "$RSYNC_SOURCE" "$BACKUP_DESTDIR" >"$RSYNC_LOG" 2>&1
|
||||
ERR="$?"
|
||||
|
||||
# Send a notification and mail a log if there were errors.
|
||||
(( ERR != 0 )) && (( ERR != 10 )) && (( ERR != 24 )) && {
|
||||
CONFIG_FILE="backups" /opt/bin/pushover -T "Backup" -p '-1' -m "Failure: $RSYNC_SOURCE"
|
||||
mailx "${MAILX_ARGS[@]}" -S "from='$EMAIL_FROM'" -s "Backup failure: $RSYNC_SOURCE" "${EMAIL_TO[@]}" <<-EOF
|
||||
Exit code: $ERR
|
||||
Output:
|
||||
$(< "$RSYNC_LOG")
|
||||
EOF
|
||||
rm -f "$RSYNC_LOG"
|
||||
exit 1
|
||||
}
|
||||
|
||||
rm -f "$RSYNC_LOG"
|
||||
|
||||
exit 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue