pg_dumpを利用し対処1ファイルずつなのは除外したいDBもあるためです。
GoogleドライブはGoogleから出ているアプリを利用しフォルダに移動するだけなので保存すること自体は簡単です。
DropBoxとかもディレクトリを変更すれば対応できると思います。
※Macを利用しているのでLinux系では一部動作しない可能性もあります。
その際は一部改変が必要になるかと思います。
バックアップ詳細はDB名_yyyyMMdd.tar.gzで保存されています。
while read部分が少し戸惑いました。
パイプを利用してreadを行うないようです。
#/bin/sh DATE=`date "+%Y%m%d"` # 日付のフォーマット TMP_DIR="/tmp/pg_dump_$DATE" # 作業ディレクトリ EXECLUDE_DB="template|postgres" # バックアップ除外対象 BACKUP_DIR="/Users/genya/Google ドライブ/backup" # バックアプディレクトリ DB_USER=postgres # 動作ユーザー # 作業ディレクトリ作成 echo "作業用ディレクトリを作成 $TMP_DIR" mkdir $TMP_DIR # DB一覧を取得する. psql -c "select datname FROM pg_database;" -t -U postgres | while read db_name do if [ -z "$db_name" ]; then continue fi # バックアップ対象外を除外 DB_COUNT=`echo "$db_name" | grep -E "($EXECLUDE_DB)" | wc -l` if [ "$DB_COUNT" -eq "1" ]; then echo "execlude database no backup $db_name" continue fi echo "backup database:$db_name" # バックアップ pg_dump -U $DB_USER $db_name > ${TMP_DIR}/${db_name}.sql # 圧縮 tar zcvf ${TMP_DIR}/${db_name}_${DATE}.tar.gz ${TMP_DIR}/${db_name}.sql >/dev/null 2>&1 # 元のファイルを削除 rm ${TMP_DIR}/${db_name}.sql # googleドライブに移動 mv ${TMP_DIR}/${db_name}_${DATE}.tar.gz "${BACKUP_DIR}/${db_name}_${DATE}.tar.gz" done # 作業ディレクトリ削除 rm -rf $TMP_DIR