采用脚本+crontab设置定时任务方案来实现。
1、写一个脚本del-file.sh,以下代码删除距当前时间超过10天以上目录,如以下代码:
#!/bin/bash
logFile=/opt/del.log
getCurTime(){
echo `date "+%Y-%m-%d %H:%M:%S"`
}
delFile(){
echo "$(getCurTime), start scan dir: $1" >> $logFile
dirList=()
i=0
for file in $1
do
if test -f $file
then
echo $file is file, not delete
else
if [ -d "$file" ]; then
dirList[i++]=$file
fi
fi
done
if [ $i -le 0 ]; then
echo "$(getCurTime), the dir is empty or not exists, dir: $1" >> $logFile
return
fi
for item in ${dirList[*]}
do
fileName=${item##*/}
temp=`date -d "$fileName"`
if [ -z "$temp" ]; then
echo "$(getCurTime), the file is not legal, file: $item" >> $logFile
continue
fi
day=$((($(date +%s) - $(date +%s -d "$fileName"))/86400))
if [ $day -gt 10 ]; then
rm -rf $item
echo "$(getCurTime), del file: $item" >> $logFile
fi
done
echo "$(getCurTime), end scan dir: $1" >> $logFile
}
echo "$(getCurTime), start work" >> $logFile
filePath="/opt/file1"
delFile "$filePath/*"
echo "$(getCurTime), end work" >> $logFile
2、crontab添加任务
crontabl -e
添加每天凌晨00:20执行任务:
20 0 * * * sudo /opt/del-file.sh