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

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 保存退出

相关推荐
PanZonghui1 分钟前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
PanZonghui3 分钟前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
PanZonghui3 分钟前
Centos项目部署之Java安装与配置
java·linux
程序员弘羽14 分钟前
Linux进程管理:从基础到实战
linux·运维·服务器
PanZonghui22 分钟前
Centos项目部署之常用操作命令
linux
JeffersonZU25 分钟前
Linux/Unix进程概念及基本操作(PID、内存布局、虚拟内存、环境变量、fork、exit、wait、exec、system)
linux·c语言·unix·gnu
大熊程序猿40 分钟前
netcore PowerShell 安装-linux
linux·运维
Johny_Zhao1 小时前
Docker 一键安装部署 JumpServer 堡垒机
linux·网络安全·信息安全·云计算·shell·jumpserver·ldap·yum源·系统运维
网硕互联的小客服1 小时前
服务器如何配置防火墙规则以阻止恶意流量和DDoS攻击?
服务器·网络·ddos
AIbase20241 小时前
国内MCP服务平台推荐!aibase.cn上线MCP服务器集合平台
运维·服务器·人工智能