infrastructure/ansible/roles/docker_cleanup/files/docker-utils/db-backup
Jake Howard f4a289ae98
Store DB files compressed
Means external backups can still be compressed a bit
2021-05-08 16:45:08 +01:00

36 lines
1 KiB
Bash
Executable file

#!/usr/bin/env bash
DATE=$(date -I)
BACKUP_DIR=$1
if [ -z "$BACKUP_DIR" ]
then
echo "No backup dir"
fi
all_containers=$(docker ps --format "{{.ID}}:{{ .Image }}")
for line in $all_containers
do
IFS=':' read -a container_details <<< $line
container_name=${container_details[1]}
container_id=${container_details[0]}
case "$container_name" in
"mariadb")
db_name=$(docker exec $container_id bash -c 'echo $MYSQL_USER')
echo Backing up mariadb $db_name
docker exec $container_id bash -c 'mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases' | zstd -z -11 | pv > $BACKUP_DIR/$db_name-$DATE.sql.zstd
;;
"postgres")
db_name=$(docker exec $container_id bash -c 'echo $POSTGRES_USER')
echo Backing up postgres $db_name
docker exec $container_id bash -c 'PGPASSWORD=$POSTGRES_PASSWORD pg_dumpall -U $POSTGRES_USER' | zstd -z -11 | pv > $BACKUP_DIR/$db_name-$DATE.sql.zstd
;;
esac
done
echo "Setting user permissions..."
chown -R root:root $BACKUP_DIR