Les backups, c’est automatique !

Pas de chichis, pas de blabla dans cet article ! Juste ce qu’il faut pour mettre en place la sauvegarde automatique d’une base de données PostgreSQL.

Le script

Le script utilisera pg_dump pour faire un dump de la base dans /home/nils/backup/db/. On crée ledit dossier :

$ mkdir -p /home/nils/backup/db

On installe le script dans /home/nils/backup/ :

cron_backup_db.sh download
#!/bin/bash

HOST="host"
DB="database"
USER="user"
PGPASSWORD="password"
DATE=`date +%Y%m%d`
FILENAME="/home/nils/backup/db/${DB}_${DATE}.sql"
# -E UTF-8
PGPASSWORD=${PGPASSWORD} pg_dump -Fc -U ${USER} -h ${HOST} ${DB} > ${FILENAME}
#gzip ${FILENAME}

Ne pas oublier de le rendre exécutable :

$ chmod +x /home/nils/backup/cron_backup_db.sh

Puis de le tester :

$ /home/nils/backup/cron_backup_db.sh

La crontab

On va utiliser cron pour lancer le script toutes les nuits à 3h30 :

$ contrab -e
30 3 * * * /home/nils/backups/cron_backup_db.sh

Aller plus haut

Pour l’instant, le script fait le strict minimum mais c’est déja énorme si le serveur PostgreSQL venait à défaillir !

Évolutions possibles :

  • rotation des sauvegardes pour n’en conserver qu’une sélection : 1 par jour pour les 2 dernières semaines, puis 1 par semaine, etc ;
  • archivage longue durée des sauvegardes via Amazon Glacier.