docker-duplicity-cron/backup.sh

50 lines
1.1 KiB
Bash
Raw Normal View History

2017-03-19 00:11:03 +00:00
#! /bin/bash
2020-02-14 20:12:07 +00:00
set -euf
BACKUP_CMD=""
if test $# -gt 0; then
BACKUP_CMD="$1"
fi
2017-03-19 00:11:03 +00:00
(
2020-02-14 20:12:07 +00:00
if ! flock -x -w "$FLOCK_WAIT" 200 ; then
echo 'ERROR: Could not obtain lock. Exiting.'
exit 1
fi
2017-03-19 00:11:03 +00:00
# Run pre-backup scripts
for f in /scripts/backup/before/*; do
2020-02-14 20:12:07 +00:00
if [ -f "$f" ] && [ -x "$f" ]; then
bash "$f"
fi
done
2020-02-14 20:12:07 +00:00
# Intentionally not wrapping BACKUP_CMD and OPT_ARGUMENTS
# shellcheck disable=SC2086
duplicity \
2020-02-14 20:12:07 +00:00
$BACKUP_CMD \
--asynchronous-upload \
2017-03-19 00:11:03 +00:00
--log-file /root/duplicity.log \
2020-02-14 20:12:07 +00:00
--name "$BACKUP_NAME" \
$OPT_ARGUMENTS \
2020-02-14 20:12:07 +00:00
"$PATH_TO_BACKUP" \
"$BACKUP_DEST"
if [ -n "$CLEANUP_COMMAND" ]; then
2020-02-14 20:12:07 +00:00
# Intentionally not wrapping CLEANUP_COMMAND
# shellcheck disable=SC2086
duplicity $CLEANUP_COMMAND \
--log-file /root/duplicity.log \
2020-02-14 20:12:07 +00:00
--name "$BACKUP_NAME" \
"$BACKUP_DEST"
fi
# Run post-backup scripts
for f in /scripts/backup/after/*; do
2020-02-14 20:12:07 +00:00
if [ -f "$f" ] && [ -x "$f" ]; then
bash "$f"
fi
done
) 200>/var/lock/duplicity/.duplicity.lock