From f2d3cb083567fb8ccead944e8ff1d931f802194a Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Sun, 25 Apr 2021 21:39:11 +0100 Subject: [PATCH] Add a bash script to backup all database containers as text --- .../files/docker-utils/db-backup | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 ansible/roles/docker_cleanup/files/docker-utils/db-backup diff --git a/ansible/roles/docker_cleanup/files/docker-utils/db-backup b/ansible/roles/docker_cleanup/files/docker-utils/db-backup new file mode 100755 index 0000000..d40beb7 --- /dev/null +++ b/ansible/roles/docker_cleanup/files/docker-utils/db-backup @@ -0,0 +1,37 @@ +#!/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]} + backup_name=$BACKUP_DIR/$db_name-$DATE.sql + + case "$container_name" in + "mariadb") + db_name=$(docker exec $container_id bash -c 'echo $MYSQL_USER') + echo Backing up mariadb $db_name to $backup_name + docker exec $container_id bash -c 'mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases' | pv > $backup_name + ;; + + "postgres") + db_name=$(docker exec $container_id bash -c 'echo $POSTGRES_USER') + echo Backing up postgres $db_name to $backup_name + docker exec $container_id bash -c 'PGPASSWORD=$POSTGRES_PASSWORD pg_dumpall -U $POSTGRES_USER' | pv > $backup_name + ;; + esac +done + +echo "Setting user permissions..." +chown -R root:root $BACKUP_DIR