XREAでApacheのログを蓄積するシェルスクリプト

コストパフォーマンスに優れたレンタルサーバと言えばXREAですが、Apacheのログをサーバ上に蓄積したくなったので、それ用のシェルスクリプトを書いてみました。

XREAでは、Apacheの生ログは直近の5日間しか保存されません。たまに必要になるときがあるので、これを別のディレクトリに蓄積していこうというものです。

storelog.sh
#!/bin/sh

# ログファイルのあるディレクトリ
log_dir=/virtual/ユーザ名/log/

# ログファイルを蓄積するディレクトリ
stored_dir=/virtual/ユーザ名/log/stored/

cd ${log_dir}

# 末尾に数字がつかないログファイルを取得(最新のログファイルのみを取得)
log_files=`find *.log -iregex ".*[^0-9]\.log$" -type f`
# ログファイルの日付を生成
log_date=`date -d '1 days ago' +%Y%m%d`

for file in $log_files; do
  # ログファイル名を抽出
  stored_file=`echo ${file} | sed -e 's/^\(.*\)\.log$/\1/'`
  # ログファイルをコピー: ログファイル -> 蓄積ディレクトリ/ログファイル名.年月日.log
  cp -p ${file} ${stored_dir}${stored_file}.${log_date}.log;
done

exit

ユーザ名とディレクトリを環境に合わせて変更後、改行コードをLFとして保存します。サーバの/virtual/ユーザ名/に転送し、stored_dirで設定したディレクトリを作成します。後は、XREAのコントロールパネルから「CRONジョブ」に「0 6 * * * storelog.sh>/dev/null 2>&1」のように設定しておけば、毎日、Apacheのログが蓄積されていきます。

XREAでは、Apacheのログは明け方にかけてローテーションされるようなので、cronジョブでは朝方の時間を指定おけば大丈夫だと思います。

たぶん、もっとスマートな方法があるに違いないと思うのですが、希望通りの動作になったのでよしとします。ファイル名を生成する方法がわからず、調べながら書いていたら時間がかかってしまいました :(

ローカルに保存しておきたい場合はrawbackup for XREAが便利です。毎日、ApacheのログとデータベースのダンプをZIPファイルでメール送信してくれます。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (1)

[…] XREAでApacheのログを蓄積するシェルスクリプト – (DxD)∞ [ツッコミを入れる] ツッコミ・コメントがあればどうぞ! spam 対策で E-mail 欄は隠してあります。もし E-mail 欄が見えていても […]

この記事のトラックバックURI
http://dxd8.com/archives/120/trackback/
この記事のURI
http://dxd8.com/archives/120/