需配置自动清理机制防止日志堆积耗尽磁盘空间,方法包括:一、启用宝塔内置日志切割并设保留天数;二、用计划任务执行find命令清理非标准路径日志;三、通过logrotate配置系统级轮转规则;四、在安全插件中设置攻击日志最大条数并启用自动清理。

如果您在宝塔面板中发现服务器因遭受频繁攻击而产生大量访问日志、错误日志或防火墙拦截日志,导致磁盘空间快速耗尽,则需要配置自动清理机制以防止日志堆积。以下是实现该目标的多种方法:
一、使用宝塔内置日志切割与自动删除功能
宝塔面板自带的日志切割工具可按周期分割日志文件,并支持设定保留天数,超出时限的日志将被自动移除,适用于 Nginx/Apache 访问日志及错误日志。
1、登录宝塔面板,在左侧菜单点击网站,选择对应站点,点击右侧设置按钮。
2、切换至日志选项卡,勾选启用日志切割,并设置保留天数(例如7天)。
3、点击保存后,系统将在每日凌晨 2:00 执行切割任务,旧日志将被压缩为 .gz 文件并依策略删除。
二、通过计划任务执行自定义日志清理脚本
针对 WAF 日志、fail2ban 日志、或宝塔安全插件生成的攻击拦截记录等非标准路径日志,可编写 Shell 脚本配合宝塔计划任务定时执行清理。
1、进入宝塔面板左侧菜单计划任务,点击添加计划任务。
2、任务类型选择Shell脚本,执行周期设为每天 3:00。
3、在脚本内容中粘贴以下命令(示例清理 /www/wwwlogs/attack_log/ 下30天前的 .log 文件):
find /www/wwwlogs/attack_log/ -name "*.log" -mtime +30 -delete
4、点击添加任务,系统将按设定时间自动运行该清理指令。
三、配置 Logrotate 系统级日志轮转规则
Logrotate 是 Linux 系统原生日志管理工具,可对任意路径日志进行轮转、压缩、删除,适用于宝塔未覆盖的第三方服务日志(如 nginx_modsec、crowdsec、custom iptables 日志)。
1、使用宝塔文件管理器进入/etc/logrotate.d/目录,新建文件,例如bt-attack-logs。
2、在文件中写入以下配置(以清理 /var/log/modsec/ 下所有 .log 文件为例):
/var/log/modsec/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 644 root root
sharedscripts
postrotate
/bin/systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
3、保存后无需重启服务,logrotate 将在每日 cron 触发时自动应用该规则。
四、利用宝塔安全插件的攻击日志自动清空设置
若已安装宝塔官方安全插件(如“防火墙”或“WAF”),其后台提供攻击日志存储上限控制,超过阈值后自动截断最旧记录,避免无限增长。
1、在宝塔面板左侧点击安全,进入防火墙模块。
2、点击右上角设置图标,在弹出窗口中找到攻击日志最大保存条数选项。
3、将其修改为合理数值(例如50000),勾选启用自动清理,点击保存。
4、插件将在下次检测到日志量超限时,立即丢弃最早批次的记录以维持总量稳定。









