ポスグレでもMySQLでも簡易バックアップスクリプト(dumpファイル作るヤツ)って毎回書くんですけど、いつもいつも適当なのを作って、次必要になったときにはそのスクリプトが見当たらず、また適当なのを作成・・・。

その永久ループ脱出+苦手なシェルスクリプト上達の為にバックアップスクリプトを良くしていく一人計画スタート!

#!/bin/sh
#
# db_backup -  database backup Script.
#
# Copyright (C) 2005 Masaki Komagata <komagata@p0t.jp> 
#     All rights reserved.
#     This is free software with ABSOLUTELY NO WARRANTY.
#
# You can redistribute it and/or modify it under the terms of 
# the GNU General Public License version 2.
#
USER=
DB=
TARGET_DIR=./
FILENAME=backup
KEEP_DAYS=7

set -- `getopt u:d:t:f:h $*`
if [ $? != 0 ]; then
    exit 1
fi
while [ $1 != -- ]; do
    case $1 in
    -u)
        USER=$2;
        shift;;
    -d)
        DB=$2;
        shift;;
    -t)
        TARGET_DIR=$2;
        shift;;
    -f)
        FILENAME=$2;
        shift;;
    -k)
        KEEP_DAYS=$2;
        shift;;
    -h)
        echo "Usage: -u USER -d DATABASE [-t TARGETDIR] [-f FILENAME] [-k KEEPDAYS]" 
        exit 1;;
    esac
    shift
done
shift

pg_dump $DB -U $USER | gzip > ${TARGET_DIR}${FILENAME}`date +%Y%m%d%H%M%S`.dmp.gz
find $TARGET_DIR -name "$FILENAME*.dmp.gz" -maxdepth 1 -mtime +$KEEP_DAYS -type f -exec rm -f {} \;

自分バックアップスクリプト史的にはパラメータをパースするgetopt(1)コマンドの発見がでかい。
「普通はこうやる」、「ていうかそのバックアップの考え方自体間違ってる」等御座いましたら宜しくお願い致します。

Comments


Option