Заметка на полях.
Ранняя версия скрипта бекапированися баз для PostgreSQL
Умеет:
Бекапы и вакуум перечисленных БД
Ротация бекапов
Копирование бекапов на удаленный хост по ssh*
Ротация бекапов на удаленном хосте *
*требуется дополнительная настройка авторизации по открытому ключу
#!/bin/bash
BACKUPDIR="/backup/"
PGHOST="127.0.0.1"
REMOTEHOST="192.168.1.141"
SSHUSER="sshuser"
PGPORT="5432"
PGUSER="postgres"
PGBIN="/opt/PostgreSQL/8.4/bin/"
BACKUPLOG="/backup/backup.log"
thedate=`date --date="today" +%Y%m%d`
themonth=`date --date="today" +%Y%m`
echo "" > $BACKUPLOG
#put the names of the databases you want to create an individual backup below
dbs=(database1, database2)
#iterate thru dbs in dbs array and backup each one
for db in ${dbs[@]}
do
DATE=`date +%H:%M:%S`
echo '[INFO] ('$DATE') Vacuum database ' $db >>$BACKUPLOG
$PGBIN/vacuumdb -h $PGHOST -p $PGPORT -U $PGUSER -f -v $db 2>>$BACKUPLOG
$PGBIN/vacuumlo -h $PGHOST -p $PGPORT -U $PGUSER -v $db 2>>$BACKUPLOG
pg_dump -h $PGHOST -p $PGPORT -U $PGUSER -F c -O -v -f $BACKUPDIR/ccam-$thedate.backup_$dbs 2>>$BACKUPLOG
done
rm -f $BACKUPDIR/*`date --date="last day" +%Y%m%d`*.backup
scp $BACKUPDIR/ccam-$thedate.backup $SSHUSER@$REMOTEHOST:$BACKUPDIR
ssh $SSHUSER@$REMOTEHOST rm -f $BACKUPDIR/*`date --date="-3 day" +%Y%m%d`*.backup
DATE=`date +%H:%M:%S`
echo '[INFO] ('$DATE') Done ' >>$BACKUPLOG
Уточнения приветствуются.