日期:2014-05-16  浏览次数:20815 次

linux系统日志的备份和定时清除

参考网页:http://reeddeer.blog.163.com/blog/static/11817104020128255434163/

脚本内容如下:

#!/bin/sh

# function:backup system log files
# name:sysbaklog.sh
# author:defang.zhang
# date:02/28/2013
# version:1.0

# 说明:备份系统的日志文件
# 1.备份/var/log/wtmp
# 2.备份/var/run/utmp
# 3.备份/var/log/messages

# 待补充...

# 参数说明
basedir=/usr/sysbaklog ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #备份总存放处
BakDir=/usr/sysbaklog/sysbaklog$(date +'%Y%m%d') ? ? ? ? #备份存放处,根据日期生成
bak_utmp=$BakDir/bak_utmp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#备份utmp
bak_syslog=$BakDir/bak_syslog ? ? ? ? ? ? ? ? ? ? ? ? ? ?#备份系统日志/var/log

#旧文件
oldFile=/usr/sysbaklog/sysbaklog$(date +%y%m%d --date='2 days ago').tar.gz

# 建备份目录
func_MkdirS()
{
?[ ! -d "$basedir" ] && mkdir $basedir
?[ ! -d "$BakDir" ] && mkdir $BakDir
?for dirs in $bak_utmp $bak_syslog ;do
? ? ?[ ! -d "$dirs" ] && mkdir -p $dirs
?done
}


# 通用备份
func_CommBackUp()
{
?cp /var/run/utmp $bak_utmp
?cp -a /var/log $bak_syslog
}

#清除备份只保留七天的
func_clearlog(){
?if [ ?-f $oldFile ];then
? rm -f $oldFile > /dev/null 2>&1
?fi
}

# 执行主函数
func_main()
{
?func_MkdirS
?func_CommBackUp
?cd $(dirname $BakDir)
?tar -zcvf $(basename $BakDir).tar.gz $(basename $BakDir) >/dev/null
?if [ $? -eq 0 ];then
? ? rm -rf $(basename $BakDir)
? ?# mv $(basename $BakDir).tar.gz $basedir
?fi
?func_clearlog()
}
func_main