Backuper toutes les bases de données d'un serveur Postgresql
Il se trouve que je viens de décider d'updater mon Postgresql 8.3 sur mon serveur de développement.
Mais avant de basculer de la 8.2 à la 8.3 j'aimerais faire un backup de chacune de mes bases de données. Comme c'est une opération que je fais assez régulièrement je décide d'écrire un petit script que voici:
puis en une ligne on sauve toutes les bases locales sauf les 2 templates qui ne me servent à rien :
for i in `psql -U postgres -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]|^\('`;do (DBBackupLocal.sh $i);done
Mais avant de basculer de la 8.2 à la 8.3 j'aimerais faire un backup de chacune de mes bases de données. Comme c'est une opération que je fais assez régulièrement je décide d'écrire un petit script que voici:
#!/bin/bash
## Script : DBBAckup.sh allows to backup a postgresql database
USAGE="Usage : `basename $0` dbnametobackup [postgresql_server(=localhost by default)]"
CGDATE=`date -I`
if [ $# -lt 2 ] ; then
if [ $# -lt 1 ] ; then
echo "$USAGE"
exit 1
else
DBName=$1
DBServer='localhost'
fi
else
DBName=$1
DBServer=$2
fi
BackupPath="DBBackup_${DBName}_${CGDATE}_Compressed.backup"
echo "****Started backup of db $DBName at `date`, log of operation is in $BackupPath.log"
if pg_dump --ignore-version --verbose --format=c --oids -h $DBServer -p 5432 -U postgres -f $BackupPath -n public $DBName > $BackupPath.log 2>&1 ; then
echo "BACKUP OKAY"
pg_restore -l $BackupPath > "DBBackup_${DBName}_${CGDATE}_tablelist.txt"
else
echo "PROBLEM OCCURED --> see log in $BackupPath.log"
if [ -f $BackupPath ] ; then
if ![ -f $BackupPath ] ; then
rm -f $BackupPath
fi
fi
fi
echo "****Finished sync of db $DBName at `date` "
puis en une ligne on sauve toutes les bases locales sauf les 2 templates qui ne me servent à rien :
for i in `psql -U postgres -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]|^\('`;do (DBBackupLocal.sh $i);done
Commentaires