Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Backup Logfiles
#!/bin/bash
# Backup From Log
#
# Copyright : 2011 Seiji Ogawa [Ogaaaan]
# http://torhamzedd.blogspot.com
# License : The MIT License
# [jp] http://goo.gl/0sFoc
# [en] http://goo.gl/KPxS
########
# 実装手順
# 1)Linuxでバックアップ専用ユーザ(buserとする)を作成
# 2)/home/buser/backup/log を作成
# 3)cronでrootとしてこのシェルを実行させる(毎月1日の0時が好ましい)
# 仕組み
# 1)今年の年を取得(YEARに代入)
# 2)今月を取得(MONTHに代入)
# 3)今年のディレクトリを作成(/backup/log/2011 など)
# 4)LOGFILES配列に含まれたファイルを順次zipファイルに追加
# 5)zipファイルの所有権を変更
# 6)元のファイルのサイズを0バイトにする
# 運用
# バックアップ先(DESTINATIONDIR)のzipファイルをダウンロード後削除する
########
# バックアップユーザ
LINUXUSER='buser'
# バックアップ元ディレクトリ
SOURCEDIR='/home/example/log'
# バックアップ先ディレクトリ
DESTINATIONDIR="/home/$LINUXUSER/backup/log"
# 対象ファイル
LOGFILES=(
"admin_access.log" "admin_error.log" "admin_ssl_access.log" "admin_ssl_error.log"
"www_access.log" "www_error.log" "www_ssl_access.log" "www_ssl_error.log"
)
# 年月日ディレクトリ作成
YEAR=`date +%Y`
MONTH=`date +%m`
mkdir -p $DESCTINATIONDIR/$YEAR/
# ファイルを順次zipに追加
for ADD in ${LOGFILES[@]};do
zip $DESTINATIONDIR/$YEAR$MONTH.zip $SOURCEDIR/$ADD
done
# 所有ユーザ変更
chown $LINUXUSER:$LINUXUSER $DESTINATIONDIR/$YEAR$MONTH.zip
# ログファイルのサイズを0にする
for FILE in ${LOGFILES[@]};do
cp /dev/null $SOURCEDIR/$FILE
done
@ogaaaan

This comment has been minimized.

Copy link
Owner Author

@ogaaaan ogaaaan commented Jan 11, 2012

59 23 28-31 * * /usr/bin/test date -d tomorrow +\%d -eq 1 && /home/buser/backup_log.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment