add: backup scripts and docker image

This commit is contained in:
2024-10-17 19:38:31 -03:00
parent 3a2d6f32f0
commit 604a514632
7 changed files with 200 additions and 0 deletions

69
scripts/backup-mysql.sh Normal file
View File

@@ -0,0 +1,69 @@
#! /bin/sh
#
# MySQL Backup
# Do backup of one or all databases of a given MySQL server
#
#
# List Databases
#
# only argument is a database url
DB_URL="$1";
# load database values as environment variables while checking URL validity
dburl-parser.sh ${DB_URL} > /tmp/ofelia.dotenv;
source /tmp/ofelia.dotenv;
rm /tmp/ofelia.dotenv;
# set backup destination
## directory path
BACKUP_DATABASES_PATH=${BACKUP_DATABASES_PATH:-/var/data/backup-databases};
mkdir -p ${BACKUP_DATABASES_PATH};
## file name
BACKUP_DATABASES_PREFIX="backup-";
BACKUP_DATABASES_SUFFIX="SQL";
if test "${DB_NAME}" = '*'; then
databases=$(mysql\
--user=${DB_USERNAME}\
--password=${DB_PASSWORD}\
--host="${DB_HOST}"\
--execute="SHOW DATABASES;"\
--vertical\
--column-names=false\
| grep -ve ^\*\
| xargs
);
else
databases="${DB_NAME:-:ALL_DATABASES:}";
fi
for database_item in ${databases}; do
if test -z "${database_item}"; then
continue;
elif test "${database_item}" = ":ALL_DATABASES:"; then
database="--all-databases";
filename_database="all-databases";
else
database="--databases ${database_item}";
filename_database="${database_item}";
fi
cat | xargs mysqldump << HEREDOC
$(test -n ${DB_USERNAME} && echo "--user=${DB_USERNAME}")
$(test -n ${DB_PASSWORD} && echo "--password=${DB_PASSWORD}")
$(test -n ${DB_HOST} && echo "--host=${DB_HOST}")
$(test -n ${DB_PORT} && echo "--port=${DB_PORT}")
--result-file=$(
printf '%s/%s%s-%s_%s.%s'\
${BACKUP_DATABASES_PATH}\
${BACKUP_DATABASES_PREFIX}\
${DB_HOST}\
${filename_database}\
$(date +%s)\
${BACKUP_DATABASES_SUFFIX}
)
${database}
HEREDOC
done