掃描過期文件腳本
簡述
**注意**前提是服務器日誌目錄以日期命名,掃描文件名,過期的目錄刪掉
如何使用
**直接執行腳本即可**
代碼部分
#!/bin/bash
#########################################################################
# > File Name: audoPigeonhole.sh
# > Author: chunlongyuan
# > Mail: [email protected]
# > 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