#!/bin/bash ################################################################################ # INIT ################################################################################ # Provide CRON_TASK_* via environment variable > /etc/crontabs/root for item in `env`; do case "$item" in CRON_TASK*) ENVVAR=`echo $item | cut -d \= -f 1` printenv $ENVVAR >> /etc/crontabs/root echo "root" > /etc/crontabs/cron.update ;; esac done if [ "$1" == "client" ]; then exec /usr/sbin/crond -f fi if [ "$NOMAD_TASK_NAME" == "init" ]; then echo "Starting RSYNC" flock -x /locks/${NOMAD_GROUP_NAME}_rsync.lock rsync -avv --exclude=Backups --exclude='*.db*' --exclude='*.db' --exclude='*db-litestream' --exclude='generations' /configbackup/ /config/ --delete-before --delete-excluded echo "Ensure no DBs" rm -rf /config/*.db* rm -rf /config/database.sqlite if [[ -f /local/litestream.yml ]]; then echo "LITESTREAM DETECTED" echo "Starting DB Restore" if /usr/local/bin/litestream restore -config /local/litestream.yml /config/${DB_NAME}; then echo "Restore of ${DB_NAME} Succeeded: " else echo "Restore of ${DB_NAME} failed" unset -v latest if [ -d "/configbackup/Backups/scheduled" ]; then for file in "/configbackup/Backups/scheduled"/*; do [[ $file -nt $latest ]] && latest=$file done fi if [ -d "/configbackup/Backups/manual" ]; then for file in "/configbackup/Backups/manual"/*; do [[ $file -nt $latest ]] && latest=$file done fi if [ -z "$latest" ]; then echo "No Backups found"; else echo "Restoring $latest" unzip -o $latest -d /config fi fi else echo "NO LITESTREAM DETECTED - trying to restore backup" unset -v latest if [ -d "/configbackup/Backups/scheduled" ]; then for file in "/configbackup/Backups/scheduled"/*; do [[ $file -nt $latest ]] && latest=$file done fi if [ -d "/configbackup/Backups/manual" ]; then for file in "/configbackup/Backups/manual"/*; do [[ $file -nt $latest ]] && latest=$file done fi if [ -z "$latest" ]; then echo "No Backups found"; else echo "Restoring $latest" unzip -o $latest -d /config fi fi chown ${PUID:-1000}:${PGID:-1000} /config/*.db* if [ -n "$DBCHMOD" ]; then chmod ${DBCHMOD} /config/${DB_NAME}; fi if [[ -f /config/config.xml ]]; then chown ${PUID:-1000}:${PGID:-1000} /config/config.xml fi exit 0 fi if [ "$NOMAD_TASK_NAME" == "finalsync" ]; then echo "Starting RSYNC" flock -x /locks/${NOMAD_GROUP_NAME}_rsync.lock rsync -avv --exclude=Backups --exclude='*.db*' --exclude='*.db' --exclude='*db-litestream' --exclude='generations' /config/ /configbackup/ exit 0 fi if [ "$NOMAD_TASK_NAME" == "db-sync" ]; then echo "Starting DBsync: sleep" #give time for app to datart properly sleep ${SLEEPTIME:-15m} echo "Starting DBsync" exec flock -x /configbackup/${NOMAD_GROUP_NAME}_litesync.lock /usr/local/bin/litestream replicate -config /local/litestream.yml exit 0 fi ################################################################################ # Anything else ################################################################################ exec "$@"