扫描过期文件脚本
简述
**注意**前提是服务器日志目录以日期命名,扫描文件名,过期的目录删掉
如何使用
**直接执行脚本即可**
代码部分
#!/bin/bash
#########################################################################
# > File Name: audoPigeonhole.sh
# > Author: chunlongyuan
# > Mail: chunlong100@qq.com
# > Created Time: Fri May 29 14:16:44 2015
# > 每日定时扫描memp里的日志文件夹是否过期,过期则删除整个以日期命名的文件夹
#########################################################################
#日志根目录这里需要根据机器修改
root_dir=/***/logs
#设置删除多少天前的日志
limit_day=30
#当前日期
today()
{
date +%Y-%m-%d
}
#判断是否因为过时而需要归档
overtime()
{
#分割以日期命名的文件夹名
b_arr=(${1//-/ })
b_year=${b_arr[0]}
b_month=${b_arr[1]}
b_day=${b_arr[2]}
#分割当前日期
t_arr=(${today//-/ })
t_year=${t_arr[0]}
t_month=${t_arr[1]}
t_day=${t_arr[2]}
#比较是否需要归档,10#是为了告诉bash这是10进制的数
b_total=$[10#$b_year*12*30+10#$b_month*30+10#$b_day]
t_total=$[10#$t_year*12*30+10#$t_month*30+10#$t_day]
#echo $1 $b_total $t_total
echo $[$t_total-$b_total]
}
#当前日期
today=$(today)
#主函数
work()
{
#for dir in $(ls $1)
for dir in $1/*
do
#echo $dir
if [ -d $dir ]
then
#如果是时间格式的目录,就直接判断是否需要归档
echo $dir|grep "[0-9]\{4\}\-[0-9]\{2\}\-[0-9]\{2\}$" > /dev/null
num=$?
if [ $num -eq 0 ]
then
#echo " 1" $dir
name=`basename $dir`
differ=$(overtime $name)
#echo "-" $differ $limit_day
#如果改文件夹的命名时间是limit_day之前,就需要归档
if [ $differ -gt $limit_day ]
then
#归档
#rm -rf $dir
echo "归档该文件:"$dir
#else
#echo "保留该文件:"$dir
fi
else
#echo " 2" $dir
#不是时间格式的目录,继续遍历
work $dir
fi
#else
#不是目录不处理
#echo "不处理文件:" $dir
fi
done
}
work $root_dir