web-dev-qa-db-ja.com

bashスクリプトでpg_dumpを自動化する

何年もbashをあまり使用しなかった後、bashを再学習しており、単一のデータベースのディレクトリへのpg_dumpを自動化する方法を理解する必要があります。

現在私は手動でボックスにsshし、suをpostgresユーザーにしてから、pg_dump database> outfileを実行しています。

これは問題なく動作しますが、手動で行う必要があることにうんざりしています。

私はbashで本当に錆びているので、次の方法を見つけたいと思います。

1.)データベースを特定のディレクトリにpg_dumpするスクリプトを記述します。2。)スクリプトはoutfile名をhostname-dateとして出力する必要があります(複数のバックアップを可能にするため)。3。)何らかの形式のエラー処理を提供できれば幸いです。

私はPostgreswikiを見て、これを行うかなり手の込んだスクリプトを見つけましたが、仕事を成し遂げるのに速くて汚いものがあるかどうか疑問に思いました。

ヒントや正しい方向へのポイントをいただければ幸いです。

みんなありがとう!

2
nulltek

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" [email protected]; exit 1; fi
3
Sven

これが私が思いついたものです。非常にシンプルですが機能します。 Svenの答えは、基本的なエラー処理でより良い仕事をすると思いますが。

#!/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

どう考えているか教えてください!

2
nulltek