注:操作有风险,请自行备份好数据,本教程仅供参考。
linux脚本,可接受两个参数,用于限制 [ 指定路径 ] 的文件 [ 空间占用大小 ] ,
或者使用默认参数,默认按时间升序 - 删除较旧的文件,建议搭配定时任务使用
#定时任务,查看使用格式
cat /etc/crontab | crontab -l
#编辑定时任务
crontab -e
0 */2 * * * /home/sf/path/surveillance/srsdelfile.sh > /dev/null 2>&1
#!/bin/bash
#参数1 路径(/home/sf/path)
#参数2 最大占用空间(30G,单位:Kb)
dir="/home/sf/path/surveillance/__defaultVhost__-live-surveillance"
maxSize=31457280
if [ -n "$1" -a -n "$2" ]
then
dir=$1;maxSize=$2
read -t 15 -p '你指定了目录['$dir']的最大占用空间为['$maxSize'],多余且最旧的文件将被删除,确认请按y:' confirm
if [ $? -ne 0 -o -n "$confirm" -o $confirm != "y" ]; then echo "脚本已终止执行!"; return 0; fi
fi
# For 循环使用$IFS 变量来确定字段分隔符,
# 默认情况下 $IFS 设置为空格字符
oldIFS=$IFS
IFS=$(echo -en "\n\b")
for file in `ls $dir -1rt`
do
#判断是否文件
if [ -d "$dir/$file" ]
then
echo "$dir/$file is directory"
else
#判断占用大小
u=`du -s $dir | awk '{print $1}'`
if [ $u -gt $maxSize ]
then
rm $dir/$file
echo "目录$dir占用空间超过$maxSize, 已删除较旧文件:"\./\"$file\"
else
break
fi
fi
done
IFS=$oldIFS