3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

cron & シェルスクリプト

メインPCを毎朝目覚まし代わりに用いていることを考えて、毎日指定時間になると起動するようにします。また、週一の間隔で設定ファイルやログなどをバックアップさせます。

このような自動起動にはcronを利用します。

■ログインしているユーザのcrontabファイル編集

$ crontab -e  これでユーザごとのcronを設定できます。

設定書式は "分 時 日 月 曜日 コマンド"

 利用できる文字は

分 0~59,*

  時 0~23,*

  日 1~31,*

  月 1~12 or jan~dec ,*

  曜日 0~7 [0,7は日曜日] or sun~sat .*

  コマンド 有効なコマンドを記述します。空白を含むことも可能ですが、標準のBourne Shellの書式に従って記述します。

※*を使用すると全指定の意味

#MainMachineへのWakeOnLan起動

#毎日6:30に起動させる

30 6 * * * /var/bkup/sh/wakeonlan.sh

#ファイルバックアップ

#週一(FRI)

0 4 * * 5 /var/bkup/sh/bkup.sh

cron の設定ガイド

http://www.express.nec.co.jp/linux/tech/knowledge/system/crond.html

cron

http://tech.bayashi.net/svr/doc/cron.html

cronの設定

http://park15.wakwak.com/~unixlife/linux/sys-cron.html

■バックアップ用シェルスクリプト

上記cronで指定しているbkup.shの内容です。

■ファイル構成

bkup.sh :バックアップ用シェルスクリプト本体

bksrc.dat:バックアップ元ファイルパス設定ファイル

シェルスクリプト内容

#! /bin/sh

#バックアップ元ファイル読み込みパスと保存ファイル名読み込み、ループ開始

cat bksrc.dat | grep -v \# | while read DIR_NAME FILE_NAME 

do

BKSRC=.$DIR_NAME

#日付取得し変数に代入(コマンド変数のため`が付く)

TIMESET=`date +%y%m%d`

#バックアップ先ファイル名を設定 設定ファイルにあるファイル名+日付.tar.gzする

BKDIR=/var/bkup/$FILE_NAME.$TIMESET.tar.gz

cd /

#tarコマンドで元ディレクトリを圧縮

tar zcf $BKDIR $BKSRC

#成功したらその旨を表示かつ、ログに保存

if [ $? = 0 ]; then

logger "Backup OK $BKDIR"

echo "Backup OK $BKDIR"

else

logger "Backup NG $BKDIR"

echo "Backup NG $BKDIR"

fi

done

■設定ファイルの書式

バックアップ元ディレクトリ名 バックアップ先ファイル名

例:

/etc etc

/var/log var_log

/var/bkup/pass var_bkup_pass

/var/bkup/sh var_bkup_sh

/usr/local/dice