mirror of
https://github.com/ChristianLempa/scripts.git
synced 2026-11-11 14:27:26 +01:00
52 lines
1.5 KiB
Bash
52 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
# DB Container Backup Script Template
|
|
# ---
|
|
# This backup script can be used to automatically backup databases in docker containers.
|
|
# It currently supports mariadb, mysql and bitwardenrs containers.
|
|
#
|
|
|
|
DAYS=2
|
|
BACKUPDIR=/home/xcad/backup
|
|
|
|
|
|
# backup all mysql/mariadb containers
|
|
|
|
CONTAINER=$(docker ps --format '{{.Names}}:{{.Image}}' | grep 'mysql\|mariadb' | cut -d":" -f1)
|
|
|
|
echo $CONTAINER
|
|
|
|
if [ ! -d $BACKUPDIR ]; then
|
|
mkdir -p $BACKUPDIR
|
|
fi
|
|
|
|
for i in $CONTAINER; do
|
|
MYSQL_DATABASE=$(docker exec $i env | grep MYSQL_DATABASE |cut -d"=" -f2)
|
|
MYSQL_PWD=$(docker exec $i env | grep MYSQL_ROOT_PASSWORD |cut -d"=" -f2)
|
|
|
|
docker exec -e MYSQL_DATABASE=$MYSQL_DATABASE -e MYSQL_PWD=$MYSQL_PWD \
|
|
$i /usr/bin/mysqldump -u root $MYSQL_DATABASE \
|
|
| gzip > $BACKUPDIR/$i-$MYSQL_DATABASE-$(date +"%Y%m%d%H%M").sql.gz
|
|
|
|
OLD_BACKUPS=$(ls -1 $BACKUPDIR/$i*.gz |wc -l)
|
|
if [ $OLD_BACKUPS -gt $DAYS ]; then
|
|
find $BACKUPDIR -name "$i*.gz" -daystart -mtime +$DAYS -delete
|
|
fi
|
|
done
|
|
|
|
|
|
# bitwarden backup
|
|
|
|
BITWARDEN_CONTAINERS=$(docker ps --format '{{.Names}}:{{.Image}}' | grep 'bitwardenrs' | cut -d":" -f1)
|
|
|
|
for i in $BITWARDEN_CONTAINERS; do
|
|
docker exec $i /usr/bin/sqlite3 data/db.sqlite3 .dump \
|
|
| gzip > $BACKUPDIR/$i-$(date +"%Y%m%d%H%M").sql.gz
|
|
|
|
OLD_BITWARDEN_BACKUPS=$(ls -1 $BACKUPDIR/$i*.gz |wc -l)
|
|
if [ $OLD_BITWARDEN_BACKUPS -gt $DAYS ]; then
|
|
find $BACKUPDIR -name "$i*.gz" -daystart -mtime +$DAYS -delete
|
|
fi
|
|
done
|
|
|
|
echo "$TIMESTAMP Backup for Databases completed" |