Skip to content

Instantly share code, notes, and snippets.

@diyfr
Last active January 24, 2020 09:57
Show Gist options
  • Save diyfr/c53a97e4cc388db0a8df2b900f34f18b to your computer and use it in GitHub Desktop.
Save diyfr/c53a97e4cc388db0a8df2b900f34f18b to your computer and use it in GitHub Desktop.
réaliser une sauvegarder de sa base postgres dockerisée et l'envoyer vers un serveur distant
#!/bin/sh
# A faire une fois
# Pour automatiser le transfert vers un autre serveur via SCP sans avoir à saisir le mot de passe
# Soit USER compte utilisateur de la machine distante et HOST adresse de la machine distante
# ssh-keygen -t rsa -C "USER@HOST"
# valider par défaut
# ssh-copy-id USER@HOST
# saisir le mot de passe pour USER sur HOST
# Service name(Host postgres) : myapp-database
# Considérant que le port 5432 est le port par défaut
# User defined brdige : myapp_bridge
# Database name : db_name
# User database db_user
# Password database db_password
# Ces binaires sont utilisés , vérifiez leur localisation
# docker, gzip, scp. Leurs emplacements peuvent varier d'un système à l'autre
FILE=yourbdd_backup_`date +%d-%m-%Y"_"%H_%M_%S`.sql.gz
/usr/bin/docker run --rm --link myapp-database --label "traefik.enable=false" --network myapp_bridge -e PGPASSWORD=db_password -e PGUSER=db_user postgres pg_dump -h myapp-database db_name |/bin/gzip > $FILE 2>&1
/usr/bin/scp $FILE USER@HOST:/distant/folder/
# on peut supprimer le fichier créé localement
rm $FILE 2>&1
# de manière périodique vous pouvez ajouter l'appel de ce script dans crontab exemple tous les jours à 5h
# 0 5 * * * /chemin/du/script/pgdump.sh > /dev/null 2>&1
# Restaurer un dump sous windows 10 via powershell. Le dézipper dans un premier temp
# se placer dans le dossier des binaires de postgres exemple C:\Program Files\PostgreSQL\9.6\bin
# puis lancer la commande (mylocaldbname a été créée au préalbale)
# .\psql.exe --dbname mylocaldbname --username postgres --no-password -f "C:\\location\\dump\\yourbdd_backup.sql"
# Enjoy !
@diyfr
Copy link
Author

diyfr commented Jan 24, 2020

# Restaurer un dump dans un container
# 1 -supprimer la base de données existante dans le container
docker run -it --rm --link myapp-database --label="traefik.enable=false" --network myapp_bridge postgres dropdb -h myapp-database db_name -U db_user  
# 2 - recréer la base de données dans le container
docker run -it --rm --link myapp-database --label="traefik.enable=false" --network myapp_bridge postgres createdb -h myapp-database db_name -U db_user  
# 3 Extraire le dump du gzip
gzip -d yourbdd_backup_2020_01_01.sql.gz
# 4 restaurer les données
docker run -it --rm --link myapp-database --label="traefik.enable=false" --network myapp_bridge -v $PWD:/tmp postgres psql -h myapp-database db_name -U db_user -f /tmp/yourbdd_backup_2020_01_01.sql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment