Делаем резервную копию БД postgres

2015, 12 июля

Изначально создаем для резервных копий папку

mkdir –p /backup/pgdump

Затем создаем файл, который будет делать копию и даем ему права на выполнения

touch backup.sh
chmod +x backup.sh

в самом файле пишем следующий код:

#!/bin/sh
#Имя БД
DBNAME=test
#Куда складываем копии
BACKUPDIR=/backup/pgdump
#Дата для имени файла
DATE=`date +%d.%m.%Y`
#удаляем файлы старше 7 дней
find $BACKUPDIR -type f -mtime +7 -delete
#Делаем резервную копию
/usr/bin/pg_dump -Ft $DBNAME | /bin/gzip > ${BACKUPDIR}/${DBNAME}_${DATE}.tar.gz

Теперь пропишем задание в cron

crontab –e

и добавляем задание, которое будет запускать наш скрипт каждую ночь в 1:30

30 1 * * * /bin/sh /путь к срипту/backup.sh

На случай если вам требуется ввод пароля для pg_dump, можно его добавить вот так
export PGPASSWORD=ваш пароль
тогда строка с дампом будет выглядеть

/usr/bin/pg_dump –U user -Ft $DBNAME | /bin/gzip > ${BACKUPDIR}/${DBNAME}_${DATE}.tar.gz

Остальные опции по мере вашей необходимости.