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