|
1、日志结构
/opt/online/{123com,abccom}/log/online[1-9]/[a-z]
2、变量说明
#是否开启压缩功能(0:关闭,1:开启;若关闭压缩功能,则compressdayn无效)
needcompress=1
删除14天以前的日志
deldayn=14
前1天
lastdayn=1
服务类型
allsvrtype="online1 online2 online3"
压缩5天前的日志
compressdayn=5
3、计划任务使用方法:
将该脚本本身copy到/opt/online下;
crontab中配置成:
#30 0 * * * cd /opt/online && chmod +x cleanlog.sh && ./cleanlog.sh >/dev/null 2>&1
cat cleanlog.sh
#!/bin/bash
#--------------------------------------------------
#Created:2015-05-18
#Author:jimmygong
#Mail:jimmygong@taomee.com
#Function:
#Version:1.0
#--------------------------------------------------
allsvrtype="online1 online2 online3"
deldayn=14
needcompress=1
compressdayn=5
lastdayn=1
alldomain="123com abccom"
allsubdir="a b c d e f g h i j k l m n o p q r s t u v w x y z"
rootdir="/opt/online"
dirtobedelname="tobedel"
lastday=`date -d "$lastdayn days ago" +%Y%m%d`
compressday=`date -d "$compressdayn days ago" +%Y%m%d`
delday=`date -d "$deldayn days ago" +%Y%m%d`
function cleandir ()
{
local ldir="$1"
local lfiles=
local lfile=
lfiles=`ls -1 $ldir | xargs`
for lfile in $lfiles
do
rm -f $ldir/$lfile
done
}
function compressdir ()
{
local ldir="$1"
local lfiles=
local lfile=
local lcompressedtarget="$ldir/$compressday.tar.gz"
# to prevent duplicate-compress
if [[ -f $lcompressedtarget ]]
then
return
fi
tar zcvf $ldir.tar.gz $ldir
if [[ $? -ne 0 ]] ; then
return
fi
lfiles=`ls -1 $ldir | xargs`
for lfile in $lfiles
do
rm -f $ldir/$lfile
done
if [[ -f $ldir.tar.gz ]] ; then
mv $ldir.tar.gz $lcompressedtarget
fi
}
function handleonelogdir ()
{
local ldir="$1"
local lscandir="$ldir/$dirtobedelname"
local lmvdir="$lscandir/$lastday"
local lones=
local lone=
local lonefull=
mkdir -p $lscandir
# remove
lones=`ls -1 $lscandir | grep $delday | xargs`
for lone in $lones
do
lonefull="$lscandir/$lone"
if [[ -d $lonefull ]] ; then
cleandir $lonefull
rm -rf $lonefull
elif [[ -f $lonefull ]] ; then
rm -f $lonefull
fi
done
# compress
if [[ $needcompress -eq 1 ]]
then
lones=`ls -1 $lscandir | grep $compressday | xargs`
for lone in $lones
do
lonefull="$lscandir/$lone"
if [[ -d $lonefull ]]
then
compressdir $lonefull
elif [[ -f $lonefull ]]
then
tar zcvf $lonefull.tar.gz $lonefull
fi
done
fi
# move last day's data
mkdir -p $lmvdir
lones=`ls -1 $ldir | grep $lastday | xargs`
for lone in $lones
do
mv $ldir/$lone $lmvdir
done
}
for domain in $alldomain
do
domaindir="$rootdir/$domain"
if [[ ! -d $domaindir ]]
then
continue
fi
for svrtp in $allsvrtype
do
svrtplogdir="$domaindir/log/$svrtp"
if [[ ! -d $svrtplogdir ]]
then
continue
fi
for sub in $allsubdir
do
svrtplogsubdir="$svrtplogdir/$sub"
if [[ ! -d $svrtplogsubdir ]]
then
continue
fi
handleonelogdir "$svrtplogsubdir"
done
done
done
exit 0
|
|