Дамп базы данных PostgreSQL

Cоздадим скрипт для снятия дампа базы данных :

создаем папку для хранения дамп файлов и скрипта

mkdir -p /backup/{dump,scripts} && cd $_

создаём файл скрипта предварительно заменив текст примера на необходимые параметры

cat <<EOF >  daily_backup.sh
#!/bin/sh
# пользователь базы данных
USER=username
# сервер база данных
HOST=localhost
# заменяем your-dababase на имя архивируемой базы данных 
DB=your-database
# заменяем your-password на ваш пароль к базе данных
PASSWORD=your-password
# формируемое имя файла 
FILENAME=\${DB}_\$(date +%Y_%m_%d_%H_%M_%S).dump
# путь к каталогу с архивными копиями
BACKUPDIR=/backup/dump/
# команда зупуска 
PGPASSWORD=\$PASSWORD pg_dump -U \$USER -h \$HOST -O -Fc \$DB > \$BACKUPDIR\$FILENAME 
EOF
# меняем тип файла скрипта на исполняемый 
chmod u+x daily_backup.sh
# добавляем расписание в cron от пользователя root
echo "0 1 * * * /backup/scripts/backup_daily.sh" >> /var/spool/cron/root
# перезапускаем службу cron
systemctl restart crond

Описание задание cron

0 1 * * * /backup/scripts/backup_daily.sh
- - - - -
| | | | |
| | | | ----- день недели (0—7) (воскресенье = 0 или 7)
| | | ------- месяц (1—12)
| | --------- день (1—31)
| ----------- час (0—23)
------------- минута (0—59)

Пример задания, которое будет выполняться ежедневно в 01:00 

Для восстановления необходимо выполнить команду:

Если база данных уже существует, следующая команда восстановит ее:

pg_restore -U username -Fc -d your-database < /backup/dump/your-database_date_YYYY_mm_dd_HH_MM_SS.dump 

Если база данных еще не существует , следующая команда создаст и восстановит ее:

pg_restore -U username -C -Fc -d your-database < /backup/dump/your-database_date_YYYY_mm_dd_HH_MM_SS.dump