vendredi, janvier 20 2006, 17:14
Script pour sauvegarde PostgreSQL
Par Guillaume Lelarge - PostgreSQL - Lien permanent
À mon travail, j'ai dû récupérer un grand nombre de bases PostgreSQL sous forme de dumps compressés. Une fois ces dumps récupérés, je devais restaurer les données qu'ils contenaient dans une base, tout ça pour exécuter un outil de statistiques. Exécuter un bunzip2/dropdb/createdb/pg_restore/bzip2 pour chacune des 54 dumps, merci bien mais je passe. Ou plutôt j'écris un script qui fera tout le boulot à ma place. Après tout, informaticien, c'est un métier où on bosse dur pour en faire le moins possible 
Le résultat de ce travail est le script suivant :
#!/bin/sh base=gl if test $# -eq 0; then echo "Manque le fichier dump en ligne de commande !" exit -1 fi dump=$1 if test ! -f $dump; then echo "Fichier inexistant !" exit -1 fi type=`file $dump | awk -F " " '{ print $2 }'` case "$type" in "SCO") echo -n "Décompression de l'archive Z... " archiveur=gunzip extension=".Z" ;; "bzip2") echo -n "Décompression de l'archive BZ2... " archiveur=bunzip2 extension=".bz2" ;; # il est toujours possible d'ajouter la gestion d'autres extensions ici esac if test "$archiveur" != ""; then $archiveur $dump >/dev/null 2>&1 if test $? -ne 0; then echo "ERREUR" exit -1 fi dump=${dump%$extension} fi if test `psql -l -t | awk '{print $1}' | grep -w $base | wc -l` -eq 1; then echo -n "Suppression de la base de données... " dropdb $base >/dev/null 2>&1 if test $? -ne 0; then echo "ERREUR" exit -1 fi fi echo -n "Création de la base de données... " createdb $base >/dev/null 2>&1 if test $? -ne 0; then echo "ERREUR" exit -1 fi echo -n "Intégration du dump... " psql -f $dump $base >/dev/null 2>&1 if test $? -ne 0; then echo "ERREUR" exit -1 fi echo -n "Compression du dump en .bz2... " bzip2 $dump >/dev/null 2>&1 if test $? -ne 0; then echo "ERREUR" exit -1 fi
Et voilà le voeu de Christophe exaucé. J'espère que ça te plaira 
un commentaire
Ah, joie !
Le script n'est pas vraiment compliqué mais c'est une super idée de mettre des liens vers les sections de l'ABS concernées. Pour ceux qui apprennent, c'est super pratique.
Je remarque quand même que tu ne prends pas la peine de quoter les variables ($dump). Tu étais sûr de ton coup ?