バックアップ処理をbourn shellで書いた。
※主に{}内を環境に合わせて書き換える必要アリ。
・バックアップというか指定のファイルをFTPでゲットして、結果のメールをする感じ
・ファイルはワイルドカードとか使って複数指定可
・ゲットする予定のファイル数と合わなければメール本文にバックアップ失敗と書いて送信する
・ログとかのバックアップ目的で書いたので、バックアップ対象のファイル数は予測できるという前提にたっている
RESULT_TEXTのあたりとか色々微妙だけど、まあいいや。
何か、こうしたらいいとかアドバイスいただけたらウレピーです。
==================
#!/bin/sh
#========================
#Configuration
#========================
#ftp setting
FTP_CMD=/usr/bin/ftp
FTP_USER={user id}
FTP_PASS={password}
REMOTE_SVR={target server ip or domain name}
REMOTE_DIR={target file directory}
LOCAL_DIR={file distination directory}
DATE_YYYYMMDD=`date +%Y%m%d`
TARGET_FILE=*$DATE_YYYYMMDD.tar.gz
#log setting
LOGDIR={log directory}
LOG=$LOGDIR/ftpbackup.log
#mail setting
MAIL_CMD=/bin/mail
MAILTO={mail to}
MAIL_SUBJECT="backup report"
#========================
#Back up start
#========================
echo `date` backup start >>$LOG
echo >>$LOG
#ftp start
$FTP_CMD -i -v -n $REMOTE_SVR<< END >> $LOG 2>&1
user $FTP_USER $FTP_PASS
cd $REMOTE_DIR
lcd $LOCAL_DIR
bin
mget $TARGET_FILE
quit
END
#test ftp result
RESULT=`/bin/ls -1 $LOCAL_DIR | grep ${DATE_YYYYMMDD} | wc -l`
if [ $RESULT -ne 2 ]
then
echo `date` backup failed >>$LOG
RESULT_TEXT="backup faild!!!!!!!"
EXIT_CD=1
else
echo `date` backup complete >>$LOG
RESULT_TEXT="backup complete"
EXIT_CD=0
fi
$MAIL_CMD -s ${MAIL_SUBJECT} ${MAILTO} <<_EOF
`date +"%Y-%m-%d %H:%M"`
${RESULT_TEXT}
_EOF
exit $EXIT_CD
==================
FTP_PASSのところでちょっとハマったんですが、シェルで処理するときに、スクリプト内に"#"とかの記号(何がアウトなのかはよく調べてない)がついていると、別解釈されてしまうっぽい。
そんなときはシングルクォート"'"で囲えばケーオツ。
あと適当にcronとか設定する感じですね。