33 lines
707 B
Bash
Executable File
33 lines
707 B
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
: "${BACKUP_CRON:=0 3 * * *}"
|
|
|
|
case "$BACKUP_CRON" in
|
|
*"
|
|
"*)
|
|
echo "BACKUP_CRON must contain a single cron expression." >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
cron_field_count="$(printf "%s\n" "$BACKUP_CRON" | awk '{ print NF }')"
|
|
|
|
if [ "$cron_field_count" -ne 5 ]; then
|
|
echo "BACKUP_CRON must contain exactly five fields." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p /backups
|
|
umask 077
|
|
|
|
printf "%s /usr/local/bin/backup-database scheduled >> /proc/1/fd/1 2>> /proc/1/fd/2\n" \
|
|
"$BACKUP_CRON" > /etc/crontabs/root
|
|
|
|
if [ "${BACKUP_RUN_ON_START:-false}" = "true" ]; then
|
|
/usr/local/bin/backup-database startup
|
|
fi
|
|
|
|
echo "Database backup cron configured: $BACKUP_CRON"
|
|
exec crond -f -l 2
|