Автоматизируйте 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

Дайте мне знать, что вы думаете!

Другие вопросы по тегам