mirror of
https://github.com/sstent/containers.git
synced 2025-12-06 08:01:51 +00:00
109 lines
3.2 KiB
Bash
Executable File
109 lines
3.2 KiB
Bash
Executable File
#!/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 "$@"
|