Skip to content

Instantly share code, notes, and snippets.

@paulknulst
Last active November 3, 2021 09:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulknulst/ddde72ab9297abfa67c167deab14f9d7 to your computer and use it in GitHub Desktop.
Save paulknulst/ddde72ab9297abfa67c167deab14f9d7 to your computer and use it in GitHub Desktop.
this simple script searches all docker container and do a full db backup of all databases
#!/bin/bash
mysqlContainer=$(docker ps | grep 'mysql\|maria' | awk {'print $NF'}) #gets every container with a name containing mysql/mariadb
postgreContainer=$(docker ps | grep -Ei 'postgre'| grep -Eiv 'gitlab' | awk {'print $NF'}) #gets every container with a name containing postgre
gitlabPotsgreContainer=$(docker ps | grep -Ei 'postgre'| grep -Ei 'gitlab' | awk {'print $NF'}) #special gitlab because it use other env variables
timestamp=$(date +%Y-%m-%d_%H-%M-%S)
for container in $mysqlContainer; do
containerStringParts=$(echo $container | tr "." "\n")
for single in $containerStringParts; do
simpleName=$single
break 1
done
docker exec $container sh -c 'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -y' >/root/backups/db/$simpleName-$timestamp.sql
done
for container in $postgreContainer; do
containerStringParts=$(echo $container | tr "." "\n")
for single in $containerStringParts; do
simpleName=$single
break 1
done
docker exec $container sh -c 'pg_dump --dbname=postgresql://"$POSTGRES_USER":"$POSTGRES_PASSWORD"@localhost/"$POSTGRES_DB"' > /root/backups/db/$simpleName-$timestamp.sql
done
for container in $gitlabPotsgreContainer; do
containerStringParts=$(echo $container | tr "." "\n")
for single in $containerStringParts; do
simpleName=$single
break 1
done
docker exec $container sh -c 'pg_dump --dbname=postgresql://"$DB_USER":"$DB_PASS"@localhost/"$DB_NAME"' > /root/backups/db/$simpleName-$timestamp.sql
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment