Я заново изучаю bash после того, как много лет не использовал его, и мне нужно найти способ автоматизировать pg_dump отдельной базы данных в каталог.
В настоящее время я вручную ввожу ssh в поле, su для пользователя postgres, затем запускаю pg_dump database> outfile.
Это нормально работает, но мне уже надоело делать это вручную.
Я действительно устарел с bash и хотел бы найти способ сделать следующее.
1.) Напишите сценарий, который будет pg_dump моей базы данных в конкретный каталог 2.) Сценарий должен выводить имя файла вывода в виде hostname-date (для обеспечения возможности нескольких резервных копий) 3.) Надеюсь, предоставит некоторую форму обработки ошибок.
Я просмотрел вики Postgres и нашел довольно сложный сценарий, который делает это, но мне было интересно, есть ли что-то быстрое и грязное, что выполнит эту работу.
Будем очень признательны за любые подсказки или указание в правильном направлении.
Спасибо, ребята и девчонки!
Не принимая во внимание какой-либо конкретный синтаксис для 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
Дайте мне знать, что вы думаете!