Автоматизируйте pg_dump в bash-скрипте
Я переучиваю bash после многих лет не очень интенсивного использования, и мне нужно найти способ автоматизировать pg_dump отдельной базы данных в каталог.
В настоящее время я вручную вставляю ssh в поле su для postgres user, затем запускаю pg_dump database> outfile.
Это работает нормально, но я устал от того, чтобы сделать это вручную.
Я очень увлечен Bash и хотел бы найти способ сделать следующее.
1.) Напишите скрипт, который будет pg_dump моей базы данных в определенную директорию 2.) Скрипт должен выводить имя выходного файла в виде hostname-date (для обеспечения возможности создания нескольких резервных копий) 3.) Надеюсь, предоставит некоторую форму обработки ошибок.
Я посмотрел на вики Postgres и нашел довольно сложный скрипт, который делает это, но мне было интересно, есть ли что-то быстрое и грязное, которое выполнит свою работу.
Любые намеки или точки в правильном направлении будет принята с благодарностью.
Спасибо, ребята и девочки!
2 ответа
Не принимая во внимание какой-либо конкретный синтаксис для pg_dump
:
#!/bin/bash
$TODAY=`date --iso-8601`
$BACKDIR=/backup
pg_dump [options] > $BACKDIR/$HOSTNAME-$TODAY
if [ "$?"-ne 0]; then echo "Help" | mail -s "Backup failed" you@example.com; exit 1; fi
Вот то, что я придумал, это очень просто, но это работает. Хотя я думаю, что ответ Свена лучше справляется с основной обработкой ошибок.
#!/bin/sh
hostname=`hostname`
# Dump DBs
date=`date +"%Y%m%d_%H%M%N"`
filename="/var/backups/app/${hostname}_${db}_${date}.sql"
pg_dump databasename > $filename
gzip $filename
exit 0
Дайте мне знать, что вы думаете!