Le principe de sauvegarde est de générer un dump SQL qui permettra de recréer votre base de données à l’identique à celle sauvegardée sur un serveur.
PostgreSQL™ propose pour cela le programme utilitaire pg_dump(1) que nous allons détailler.

pg_dump

L’usage basique de pgdump est le suivant :

pg_dump base_de_donnees > fichier_de_sortie

Sauvegarde hebdomadaire postgresql

Nous allons créer un script permettant faire la sauvegarde de votre base ainsi que la rotation des sauvegardes sur 10 jours.
Les backup seront stockés dans le dossier /backup/database/postgresql/

#Création du répertoire dédié aux sauvegardes de la base de données en donnant les droits à postgres :
 mkdir -p /backup/database/postgresql/
 chown -R postgres:postgres /backup/database/postgresql/

On génère ensuite une sauvegarde de la base de données avec l’utilisateur jaliosuser :

pg_dump -F c -b -v -f "/backup/database/postgresql/NOM_DE_LA_DB-$(date +"%Y-%m-%d-%H-%M-%S").dump" NOM_DE_LA_DB

Sauvegarde quotidienne postgresql

Nous allons créer un script permettant faire la sauvegarde de votre base données quotidiennement.
On édite le fichier /etc/cron.daily/postgresql-Nom_BDD_db-backup dans le quel on ajoute les éléments suivants :

vim /etc/cron.daily/postgresql-Nom_BDD_db-backup
 
 #!/bin/bash
 # Backup quotidien
 su -c "pg_dump -F c -b -v -f /backup/database/postgresql/NOM_DE_LA_DB-$(date +"%Y-%m-%d-%H-%M-%S").dump NOM_DE_LA_DB" postgres
 
 # Suppression des backups de plus de 10 jours
 su -c "find /backup/database/postgresql/ -type f -mtime +10 -delete" postgres

Ensuite, on modifie les droits d’accès au fichier :

chmod +x /etc/cron.daily/postgresql-Nom_BDD_db-backup

NB: Vos modifications et mise en place de sauvegarde sont automatiquement prises en compte.