自动定时删除磁盘文件的脚本(从文件日期最早的开始删)

bash 复制代码
#!/bin/bash

# 指定的挂载点
MOUNTPOINT="/media/vm/MyDisk512GB"

# 设置磁盘大小的限制 (例如:800G)
LIMIT=$((800 * 1024 * 1024))  # 单位是KB

# 获取挂载点的已使用空间
USED_SPACE=$(df -kP "$MOUNTPOINT" | tail -1 | awk '{print $3}')

echo "当前使用空间: $USED_SPACE KB, 阈值: $LIMIT KB"

# 如果已使用空间超过限制
while [[ $USED_SPACE -gt $LIMIT ]]; do
    # 查找日期最早的文件(基于文件名中的日期)并删除
    OLDEST_FILE=$(find "$MOUNTPOINT" -type f -regex ".*/portal_[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9].*" | sort | head -n 1)
    
    # 检查$OLDEST_FILE不为空
    if [[ ! -z "$OLDEST_FILE" ]]; then
        echo "正在删除: $OLDEST_FILE"
        rm -f "$OLDEST_FILE"
    else
        # 如果没有找到符合格式的文件,则退出循环
        echo "未找到符合格式的文件,无法继续删除。"
        break
    fi
    
    # 更新已使用空间
    USED_SPACE=$(df -kP "$MOUNTPOINT" | tail -1 | awk '{print $3}')
    echo "更新后的使用空间: $USED_SPACE KB"
done

echo "清理完成"

应用到其他地方主要需要修改

1.磁盘挂载点 2.磁盘大小限制 3.正则表达式匹配文件名

定时任务设定

bash 复制代码
crontab -e

在文件中添加 0 * * * * 脚本路径 表示一个小时删一次

Ctrl+X 然后Y 保存退出

相关推荐
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质10 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush410 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52010 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz11 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工11 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智12 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩12 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_12 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化