1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# ###################################
# Script de sauvegarde
# ###################################
SUFFIX=__`date '+%Y%m%d_%H%M%S'`.dump
BACKUP_PATH=/backup/db
BASETYPE=postgres
JOURCOURANT=`date '+%d'`
MOISCOURANT=`date '+%m'`
ANNEECOURANT=`date '+%Y'`
if [ ! -d "$BACKUP_PATH/$BASETYPE" ]; then
mkdir $BACKUP_PATH/$BASETYPE
fi
# boucle sur toutes les bases
DATABASES=`/usr/bin/psql -Upostgres -h127.0.0.1 -A -t -c "select datname from pg_database where datname not in ( 'template0', 'template1', 'postgres') " template1`
for DATABASE in $DATABASES
do
if [ ! -d "$BACKUP_PATH/$BASETYPE/$DATABASE" ]; then
mkdir $BACKUP_PATH/$BASETYPE/$DATABASE
fi
# creation de la sauvegarde
/usr/bin/pg_dump -f$BACKUP_PATH/$BASETYPE/$DATABASE/$DATABASE$SUFFIX -Upostgres -h127.0.0.1 -D -F p $DATABASE
/usr/bin/pg_dump -f$BACKUP_PATH/$BASETYPE/all/$DATABASE.dump -Upostgres -h127.0.0.1 -D -F p $DATABASE
gzip $BACKUP_PATH/$BASETYPE/$DATABASE/$DATABASE$SUFFIX
# suppression des sauvegardes de + 1 mois sauf 01 et 15
REP=`ls $BACKUP_PATH/$BASETYPE/$DATABASE/`
for FIC in $REP
do
# annee
ANNEE=${FIC##$DATABASE}
ANNEE=${ANNEE##__}
ANNEE=${ANNEE:0:4}
MOIS=${FIC##$DATABASE}
MOIS=${MOIS##__}
MOIS=${MOIS:4:2}
JOUR=${FIC##$DATABASE}
JOUR=${JOUR##__}
JOUR=${JOUR:6:2}
# si JOUR = 01 continue
if [ $JOUR -eq 01 ]; then
continue
fi
# si JOUR = 01 continue
if [ $JOUR -eq 15 ]; then
continue
fi
# si MOIS = MOISCOURANT continue
if [ $MOIS -eq $MOISCOURANT ]; then
continue
fi
rm $BACKUP_PATH/$BASETYPE/$DATABASE/$FIC
done
done
echo |