linux环境利用定时任务删除过期文件脚本

一、编写shell脚本 task4delExpiredFiles.sh

#!/bin/bash
#配置定时任务方法
#crontab -e
#输入命令并保存退出  * * * * * /cloud/tesh/task4delExpiredFiles.sh >> /cloud/tesh/logs/task4delExpiredFiles_$(date "+\%Y-\%m-\%d").log 2>&1
function deleteFiles(){
    targetDir=$1
    
    if [ ! -d "$targetDir" ];then
       echo "===>target dir [${targetDir}] is not existed,exit."
       return
    fi
    formatedTimeStr=$(date -d @$beforeTimeStamp "+%Y-%m-%d %T")
    echo "=========>即将删除 $formatedTimeStr 之前的文件<========="
    operated='false'
    #根据文件修改时间升序排列
    for file in `ls -rt $1`
    do
      dir_or_file=$1"/"$file    
      filetimestamp=`stat -c %Y $dir_or_file`        
      timecha=$[$filetimestamp - $beforeTimeStamp]
      echo "time dif is "$timecha
      if [ $timecha -lt 0 ];then
        operated='true'        
        if test -f $dir_or_file
           then        
           echo "===>删除文件 $dir_or_file ..."
           rm -f $dir_or_file
        elif test -d $dir_or_file
          then
             echo "===>删除文件夹 $dir_or_file 中所有的文件..."
           rm -rf $dir_or_file
         fi
       fi
    done
    if [ $operated = 'true' ];then
      echo "===>删除过期文件完成."
    else
      echo "===>没有符合条件的过期文件,退出."
    fi
    echo "======================================================="
    
}
#源文件根目录,手动配置
base_file_dir=/cloud/tesh/file
#获取当前时间戳,单位为秒,date --date=20151117 +%s  将指定时间转换为秒
current_timeStamp=`date +%s`
#文件最大保留天数
max_file_keep_days=7
#计算时间差,单位为秒
let "diff=$max_file_keep_days*24*60*60"
let "beforeTimeStamp=$current_timeStamp-$diff"
echo "before is "$beforeTimeStamp
#调用删除文件函数
deleteFiles $base_file_dir 

二、编写定时任务

执行命令 crontab -e
输入如下文本保存退出即可
* * * * * /tesh/task4delExpiredFiles.sh >> /tesh/logs/task4delExpiredFiles_$(date "+\%Y-\%m-\%d").log 2>&1
posted @ 2022-03-19 15:27  Franson  阅读(28)  评论(0编辑  收藏  举报