バックアップ用スクリプト

ディレクトリ下の定期バックアップ - ITmedia エンタープライズ
crontabの書き方 | server-memo.net
を参考に(というか丸写しして)バックアップ用のシェルスクリプトを書いたのでメモ。

#!/bin/sh
#
# 名称
#    tar-backup - tarによるバックアップ
#
# 書式
#    tar-backup bakdir [storagedir]
#
# 解説
#    例:
#     tar-backup bakdir storagedir
#     とすると,bakdir以下のディレクトリをtarでまとめ、バックアップをstoragedirに置く。
#
# 戻り値
#   0    正常終了
#   1    ユーザの指定間違い
#
############################################################
CMDNAME=`basename $0`
USAGE="Usage: $CMDNAME bakdir [storagedir]"

CURDIR=`pwd`			# 現在のディレクトリ

#
# 引数のチェック
#
BAKDIR=				# バックアップをとる親ディレクトリ
STORAGEDIR=			# バックアップ置き場

if [ $# -eq 1 ]; then
    BAKDIR="$1"
    STORAGEDIR=$CURDIR
elif [ $# -eq 2 ]; then
    BAKDIR="$1"
    STORAGEDIR="$2"
else
    echo "$USAGE" 1>&2
    exit 1
fi

if [ ! -d $BAKDIR ];
then
    echo "$BAKDIR is NOT a directory. " 1>&2
    exit 1
fi

if [ ! -d $STORAGEDIR ];
then
    echo "$STORAGEDIR is NOT a directory. " 1>&2
    exit 1
fi


# メイン処理(tarによる圧縮)
cd $BAKDIR
/bin/date '+/bin/tar zcvf '$STORAGEDIR'/backup_%y%m%d.tar.gz ./* >> '$STORAGEDIR'/backup_%y%m%d.log' | /bin/sh
cd $CURDIR

exit 0
  • crontabの設定

毎月20日にバックアップファイルを作るように設定。とりあえず/usr にbackup置き場を掘ったけど、どこに置くのが普通なんかなぁ。。。

0 4 20 * * root (/home/suji/shell_script/tar-backup /home/suji/ /usr/backup/) > /dev/null