掃描過期文件腳本

掃描過期文件腳本

簡述

**注意**前提是服務器日誌目錄以日期命名,掃描文件名,過期的目錄刪掉

如何使用

**直接執行腳本即可**

代碼部分


#!/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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章