宝塔面板批量清理网站垃圾缓存与过期日志脚本

宝塔面板批量清理网站垃圾缓存与过期日志脚本,零基础也能照做

如果你在宝塔面板上跑着多个网站,日志文件越积越多,Redis缓存和Nginx静态缓存占空间,手动一个一个清太麻烦。
本文写了一个Shell脚本,能一次性清理所有站点的过期日志、Nginx缓存、PHP Session和Redis缓存(可选),释放磁盘空间,提升服务器性能。

为什么需要这个批量清理脚本

很多新手用宝塔面板,磁盘空间慢慢被以下几类文件吃掉:

  • 网站访问日志错误日志,默认不自动清理,时间长了可能几个G。
  • Nginx FastCGI缓存静态缓存,如果开启了缓存功能,缓存目录会膨胀。
  • PHP Session文件,多数情况无意义长期保留。
  • Redis缓存,如果开启了Redis加速,过期key会残留。
  • Composer缓存pip缓存(如果服务器有开发环境)。

一个脚本全搞定,还能设置每月自动执行,省心省力。

准备工作

  1. 已安装宝塔面板(任意版本均可,测试环境为CentOS 7+,Ubuntu 20+)。
  2. SSH登录权限:面板左侧菜单「终端」或自己用Xshell/SecureCRT连接。
  3. 确认网站根目录路径:宝塔默认网站目录为 /www/wwwroot/
  4. 确认缓存路径:Nginx缓存默认在 /www/server/nginx/cache/,nginx.conf里可查。

建议先执行 df -h 查看磁盘使用率,方便清理后对比。

批量清理脚本代码及说明

新建脚本文件 clean_bt.sh

#!/bin/bash
# 宝塔面板批量清理网站垃圾缓存与过期日志脚本
# 作者:服务器运维助手
# 版本:1.0
# 适用环境:宝塔面板Linux服务器

# ========== 配置区域(可根据需要修改) ==========
LOG_RETENTION_DAYS=30          # 日志保留天数(超过此天数的日志删除)
NGINX_CACHE_DIR="/www/server/nginx/cache"  # Nginx缓存目录位置,请确认
CLEAN_REDIS=0                   # 是否清理Redis缓存(1=清理,0=不清)
REDIS_PASSWORD=""               # Redis密码(如果有请填写)
# ========== 配置结束 ==========

echo "========================================"
echo "宝塔面板批量清理开始 - $(date)"
echo "========================================"

# 1. 清理各网站过期日志(access.log & error.log)
for site_dir in /www/wwwroot/*/; do
    log_dir="${site_dir}logs"
    if [ -d "$log_dir" ]; then
        echo "[日志] 清理 $log_dir 中超过 ${LOG_RETENTION_DAYS} 天的日志文件"
        find "$log_dir" -type f \( -name "*.log" -o -name "*.log.*" \) -mtime +${LOG_RETENTION_DAYS} -exec rm -f {} \;
    fi
done

# 2. 清理Nginx缓存文件
if [ -d "$NGINX_CACHE_DIR" ]; then
    echo "[缓存] 清理Nginx缓存目录:$NGINX_CACHE_DIR"
    find "$NGINX_CACHE_DIR" -type f -delete
fi

# 3. 清理PHP Session文件(默认1小时无修改的视为垃圾)
php_session_path="/var/lib/php/sessions"
if [ -d "$php_session_path" ]; then
    echo "[Session] 清理过期PHP Session文件"
    find "$php_session_path" -type f -amin +60 -delete
fi

# 4. 清理Redis缓存(如果开启)
if [ "$CLEAN_REDIS" -eq 1 ]; then
    if command -v redis-cli &> /dev/null; then
        echo "[Redis] 清空所有Redis缓存(谨慎!)"
        if [ -n "$REDIS_PASSWORD" ]; then
            redis-cli -a "$REDIS_PASSWORD" FLUSHALL
        else
            redis-cli FLUSHALL
        fi
    else
        echo "[Redis] redis-cli未安装,跳过"
    fi
fi

echo "========================================"
echo "清理完成 - $(date)"
echo "========================================"

功能解释

  • 遍历 /www/wwwroot/ 下每个网站目录,清除 logs 文件夹中超过30天的 .log 文件。
  • 删除 Nginx 缓存目录内所有缓存文件。
  • 删除 PHP Session 文件夹中60分钟无活动的 Session 文件。
  • 可选清空 Redis 所有数据(谨慎,建议先确认用途)。

使用步骤与计划任务设置

1. 创建脚本文件

在 SSH 终端执行:

cd /root
vim clean_bt.sh

i 进入编辑模式,粘贴上面脚本,按 ESC 输入 :wq 保存退出。

2. 赋予执行权限

chmod +x clean_bt.sh

3. 手动执行测试

bash clean_bt.sh

观察输出,确认没有报错。
df -h 对比清理前后的磁盘空间。

4. 设置自动执行(每月1号凌晨2点)

在宝塔面板左侧「计划任务」添加:

  • 任务类型:Shell脚本
  • 执行周期:选择 每月1日02:00
  • 脚本内容:bash /root/clean_bt.sh
  • 任务名称:批量清理网站垃圾缓存与过期日志
  • 点击「添加任务」

也可以直接用crontab:

crontab -e

添加一行:

0 2 1 * * bash /root/clean_bt.sh >> /var/log/clean_bt.log 2>&1

保存退出。
日志会记录执行情况,方便排查。

避坑指南及效果验证

常见问题解答

Q:脚本执行后磁盘空间没有释放?
A:先检查 NGINX_CACHE_DIR 路径是否正确,宝塔面板安装的Nginx缓存默认路径为 /www/server/nginx/cache,如果自定义过需要修改脚本。另外日志文件若未超30天不会被删除,可以临时调整 LOG_RETENTION_DAYS=1 测试。

Q:清理Redis缓存会不会导致网站数据丢失?
A:如果Redis只用于缓存(如WordPress的Redis Object Cache),清理后缓存会重新生成,不影响数据。但如果Redis存储了session或队列任务,请将 CLEAN_REDIS 设置为0或安装前确认。

Q:提示权限不足(Permission denied)?
A:确认以root用户执行。宝塔默认使用 www 用户运行网站,但脚本需要root权限才能删除Nginx缓存和日志文件。用 sudo -i 切换到root再执行。

Q:如何恢复误删的日志?
A:日志删除不可恢复。建议首次执行时先注释掉 -exec rm,改为 -exec ls {} \; 预览要删除的文件列表,确认无误再正式删除。

效果验证

清理后执行 du -sh /www/server/nginx/cache 查看Nginx缓存大小,执行 du -sh /www/wwwroot/*/logs 检查日志目录变化。
如果设置了计划任务,可等待一个月后自动执行,或者手动执行后查看 df -h 确认空间恢复。

如果你的网站开启了Redis,执行前用 redis-cli dbsize 查看key数量,清理后再查询应为0。

结语

这个宝塔面板批量清理网站垃圾缓存与过期日志脚本适合日常维护,释放磁盘空间,避免日志撑爆硬盘。
初次使用时建议先手动执行并观察,再设置自动任务。
如果遇到其他问题,欢迎在评论区留言交流。

分享到:
上一篇
服务器带宽限速脚本防止爬虫恶意耗尽出口流量
下一篇
Nginx自定义日志格式分析海外访客来源地区完整配置
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意