Skip to content

Instantly share code, notes, and snippets.

@paulknulst
Last active November 3, 2021 09:29
Show Gist options
  • Save paulknulst/ddde72ab9297abfa67c167deab14f9d7 to your computer and use it in GitHub Desktop.
Save paulknulst/ddde72ab9297abfa67c167deab14f9d7 to your computer and use it in GitHub Desktop.

Revisions

  1. paulknulst revised this gist Nov 3, 2021. 1 changed file with 25 additions and 9 deletions.
    34 changes: 25 additions & 9 deletions full-db-backup.sh
    Original file line number Diff line number Diff line change
    @@ -1,16 +1,32 @@
    #!/bin/bash
    containers=$(docker ps | grep 'mysql\|maria' | awk {'print $NF'})
    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 $containers
    do
    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 single in $containerStringParts
    do
    simpleName=$single
    break 1
    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

    timestamp=$(date +%Y-%m-%d_%H-%M-%S)
    docker exec $container sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/backups/$simpleName-$timestamp.sql
    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
  2. paulknulst revised this gist Aug 5, 2021. No changes.
  3. paulknulst created this gist Aug 4, 2021.
    16 changes: 16 additions & 0 deletions full-db-backup.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,16 @@
    #!/bin/bash
    containers=$(docker ps | grep 'mysql\|maria' | awk {'print $NF'})

    for container in $containers
    do
    containerStringParts=$(echo $container | tr "." "\n")

    for single in $containerStringParts
    do
    simpleName=$single
    break 1
    done

    timestamp=$(date +%Y-%m-%d_%H-%M-%S)
    docker exec $container sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/backups/$simpleName-$timestamp.sql
    done