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