mirror of
https://github.com/ChristianLempa/scripts.git
synced 2026-11-11 07:32:43 +01:00
db-container-backup-script
This commit is contained in:
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
|
||||
Reference in new issue
Block a user