#!/bin/sh ###################################################################### # 日志定时运行时间为每天0点1分 # 删除30天之前的日志文件,压缩一周之前的日志文件保留或发送 # 日志文件时间是根据日志名称后面的日期来计算 # 运行脚本注意日志文件中是否有其他相同后缀的非日志文件和日志文件名称是否符合要求 ###################################################################### #定义tomcat日志文件所在目录 path=/opt/tomcat/logs cd $path #catalina.out日志文件备份 #获取前一天的日期 bak_date=`date +%Y-%m-%d -d "1 days ago"` #备份catalina.out日志,后面添加日期 cp catalina.out catalina.out.$bak_date.log #清空catalina.out日志文件 echo > catalina.out #30天之前的日志文件删除 #获取30天之前的日期 del_date=`date +%Y-%m-%d -d "30 days ago"` #获取文件名中的日期字符串,然后对比时间进行相应的操作,localhost_access_log的后缀文件名一般是txt,这里包括txt文件 for n in `/bin/ls *.log *.txt -1`;do m=`echo $n | awk -F. '{print $(NF-1)}'` m=`/bin/echo "$m"|/bin/sed 's/-//g'` del_dates=`/bin/echo "$del_date"|/bin/sed 's/-//g'` if [ ! -n $m ];then echo "IS NULL" continue echo "$m" elif [ $m -lt $del_dates -o $m -eq $del_dates ];then echo file $n will be deleted. rm -rf $n fi done ############################################################################# #7天之前的文件压缩 #获取7天之前的日期 zip_date=`date +%Y-%m-%d -d "7 days ago"` #获取文件名中的日期字符串,然后对比时间进行相应的操作 for n in `/bin/ls *.log *.txt -1`;do m=`echo $n | awk -F. '{print $(NF-1)}'` m=`/bin/echo "$m"|/bin/sed 's/-//g'` zip_dates=`/bin/echo "$zip_date"|/bin/sed 's/-//g'` if [ ! -n $m ]; then echo "IS NULL" continue elif [ $m -lt $zip_dates -o $m -eq $zip_dates ];then echo file $n will be zip. zip $n.zip $n rm -rf $n fi done #对打包文件进行发送 /usr/bin/sshpass -p 'xxxx' /usr/bin/rsync -avzP -e 'ssh -p 22' --progress ${path}/*.zip root@xxx.xx.xx.xx:/Backup_DB_WEB/Math_DB/Gongwang/Log/tomcat/ && /bin/rm -rf *.zip
转载于:https://my.oschina.net/wangyunlong/blog/3048170