db-container-backup-script

This commit is contained in:
xcad2k committed 2021-04-11 15:25:50 +02:00
1 parent 236dc526e3
commit 5e0ed2180c
3 files changed
+73

No files matched your search

@@ -0,0 +1,11 @@
[Unit]
Description=DB Container Backup Script
Wants=db-container-backup.timer
[Service]
Type=simple
ExecStart=sh db-container-backup.sh
User=xcad
[Install]
WantedBy=default.target
@@ -0,0 +1,52 @@
#!/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"
@@ -0,0 +1,10 @@
[Unit]
Description=DB Container Backup Daily Job
[Timer]
OnCalendar=daily
Persistent=true
Unit=db-container-backup.service
[Install]
WantedBy=timers.target