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


相关推荐