磁盘空间不足自动删除老文件
诉求
本地sftp服务持续写入数据,希望磁盘空间占用90%自动删除最老的数据。
实现
使用shell脚本
DIR=/var/sftp/volc
ACT=90
ls -dtr $DIR/*.xz | while read f ; do
if [ `df --output=pcent $DIR | sed '1d;s/%//'` -le $ACT ] ; then
break
fi
echo `date` delete $f
rm -f $f
done
注意:建议先找其他路径测试效果,单纯rm换成echo无法在循环中减少磁盘占用,无法检验。
计划任务
每天0点自动执行一次脚本
crontab -e
# m h dom mon dow command
0 0 * * * /home/volc/autoclear.sh &> /home/volc/log.txt
参考
bash - Deleting oldest files to free space as needed on Linux - Super User