#!/bin/bash # usage: backup_db2 dbname # Dump une base postgresql, et garde plusieurs dumps dans le passe # (configurable dans le script backup_rotation.sh) # Les dumps sont compresses (gzip). # # E. Viennet pour ScoDoc, 2014 # (ce script est meilleur que l'ancien backup-db, car l'espace entre # deux sauvegardes dépend de leur anciennete) # # # Note: pour restaurer un backup (en supprimant la base existante !): # # 0- Arreter scodoc: /etc/init.d/scodoc stop (ou systemctl stop scodoc) # # Puis en tant qu'utilisateur postgres: su postgres # 1- supprimer la base existante si elle existe: dropdb SCOXXX # # 2- recreer la base, vide: createdb -E UTF-8 SCOXXX # (nom de la base: SCOXXX ou XXX=departement) # # 3- pg_restore -d SCOXXX SCOXXX_pgdump # # Revenir a l'utilisateur root: exit # 4- Relancer scodoc: /etc/init.d/scodoc start (ou systemctl start scodoc) DBNAME=$1 DUMPBASE="$DBNAME"-BACKUPS DUMPFILE="$DUMPBASE"/incoming/"$DBNAME"_pgdump # 1-Check if base pathname for backups exist if [ ! -e ${DUMPBASE} ]; then mkdir ${DUMPBASE} fi # Initialize subdirs if needed for s in incoming backup.hourly backup.daily backup.weekly backup.monthly do if [ ! -e ${DUMPBASE}/"$s" ]; then mkdir ${DUMPBASE}/"$s" fi done # 2- Dump postgresql data pg_dump --format=t "$DBNAME" -f $DUMPFILE gzip $DUMPFILE # 3- Rotate backups: remove unneeded copies /opt/scodoc/Products/ScoDoc/misc/backup_rotation.sh "$DUMPBASE"