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:

#!/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

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Find the lists of disks of your Proxmox VM stored in a ceph cluster

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD