宝塔面板批量清理网站垃圾缓存与过期日志的完整教程

为什么需要批量清理网站垃圾缓存与过期日志

服务器运行久了,各个站点都会产生大量缓存文件和过期日志。
WordPress、ThinkPHP、Laravel 等框架在运行时会生成 runtime / cache 目录,Nginx 和 Apache 的访问日志也会堆积。
如果不定期清理,磁盘空间会被悄然占满,导致网站访问异常甚至面板无法登录。

本文专门针对使用宝塔面板管理的多站点服务器,提供一套批量清理方案。
不管你有 5 个还是 50 个网站,都能一次性处理,无需逐个登录目录操作。

准备工作:了解磁盘现状和清理范围

在开始清理之前,建议先确认当前磁盘占用情况。
登录宝塔面板,左侧点击“监控” -> “磁盘”,查看整体使用率。
也可以直接登陆 SSH 执行 df -h 快速查看。

常见需要清理的目录包括:

  • 各站点下的 runtimecachetempupload/cache 等缓存目录
  • 网站日志(如 /www/wwwlogs/ 下的 .log 文件,超过 7 天或 30 天的老日志)
  • 宝塔面板自身的缓存(面板设置 -> 清空缓存)
  • 系统临时文件(/tmp)和包管理器缓存
注意:不要盲删 .user.iniindex.php 或自定义的配置目录。如果不确定,先备份重要数据。

方法一:使用宝塔计划任务 + 脚本批量清理(推荐)

这是最省力的方式——设置一次,以后自动执行。

1. 编写清理脚本

登录宝塔面板,点击左侧“文件”,进入 /root/www 目录,新建文件 batch_clean.sh
将以下内容粘贴进去:

#!/bin/bash
# 网站根目录(通常位于 /www/wwwroot)
SITE_ROOT="/www/wwwroot"

# 需要清理的目录名(用空格分隔)
CLEAN_DIRS=("runtime" "cache" "temp" "upload/cache")

# 遍历每个站点
for site in "$SITE_ROOT"/*/; do
    if [ -d "$site" ]; then
        for dir in "${CLEAN_DIRS[@]}"; do
            target="${site}${dir}"
            if [ -d "$target" ]; then
                echo "清理: $target"
                rm -rf "$target"/*
            fi
        done
    fi
done

# 清理7天前的日志
find /www/wwwlogs -name "*.log" -mtime +7 -delete
echo "日志清理完成(保留7天内)"

echo "批量清理结束"

2. 赋予执行权限

在文件上右键 -> 权限 -> 勾选“755”,或者终端运行 chmod +x /www/batch_clean.sh

3. 添加计划任务

宝塔面板 -> 计划任务 -> 添加任务:

  • 任务类型:Shell脚本
  • 任务名称:批量清理缓存与日志
  • 执行周期:每周日 03:00(根据自己需求)
  • 脚本内容:bash /www/batch_clean.sh

点击“添加”后,可手动点击“执行”测试一次。

4. 结果确认

执行后查看“执行日志”是否有报错。
若无错误,磁盘已经释放。

方法二:手动批量执行命令(SSH 方式)

如果你更习惯命令行,或者只想一次性清理,可以 SSH 登录后逐条执行。
以下命令请在 root 用户下运行:

# 进入站点根目录
cd /www/wwwroot

# 批量删除所有站点的 runtime 和 cache 目录内容
for d in */; do [ -d "${d}runtime" ] && rm -rf "${d}runtime"/*; [ -d "${d}cache" ] && rm -rf "${d}cache"/*; done

# 清理7天以上的日志
find /www/wwwlogs -name "*.log" -mtime +7 -delete

如果希望保留空目录结构(不删除目录本身),上述命令已满足。
若要连目录一起删除,需修改命令,但不建议,以免某些程序自动重建目录权限错误。

避坑指南:常见问题与注意事项

  • 误清空重要数据:清理前务必确认脚本里的目录名是否和你的站点实际目录一致。有些程序(如 Discuz!)使用 data/cache,需要额外添加。最好先在一个站点上手动验证。
  • 日志清理过频:如果日志用于分析流量或排错,建议保留最近 14 天或 30 天,将 -mtime +7 改为 +14+30
  • 权限不足:如果日志文件属主是 www,但当前是 root,find -delete 可以成功。若用其他用户执行,可能报“权限不足”。建议脚本以 root 运行。
  • 面板缓存未清理:宝塔面板自身也缓存了站点状态,可手动在“面板设置”->“清空缓存”或重启面板。

效果验证:清理前后对比

运行脚本后,再次执行 df -h 查看根分区或 /www 分区的可用空间变化。
也可以登录宝塔面板的“监控”查看最近磁盘走势。

如果清理后磁盘空间没有明显变化,说明主要占空间的可能是其他目录(比如数据库、备份文件、未清理的大文件)。
使用 du -sh /*du -sh /www/* 找出大目录,再针对性处理。

高频问题解答

Q:脚本里列出的目录名和我的站点不一致怎么办?
A:你可以先进入 /www/wwwroot/你的站点/ 查看实际缓存目录名,修改 shell 脚本中的 CLEAN_DIRS 数组即可。

Q:如何只清理某个指定站点?
A:将脚本中 for site in ... 部分改为 site="/www/wwwroot/你的域名",再按同样的清理逻辑执行。

Q:计划任务执行后显示“Permission denied”是什么原因?
A:脚本文件没有执行权限,请在文件管理设置 755 权限,或者用 bash /路径/脚本.sh 代替直接执行。

Q:宝塔面板有自带的清理插件吗?
A:宝塔软件商店中有“日志清理”、“系统加固”等工具,但针对批量站点的缓存清理功能较少,本脚本是更灵活的补充。

---

一次配置,长期受益。
如果你的服务器站点数量多、日志增长快,建议按本文步骤设置定期清理。
遇到问题先回看“避坑指南”,也可以结合实际日志路径微调脚本。
如果想了解更细粒度的文件清理(比如按文件大小或保留天数),可以继续查看我写的相关文章。

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

机房迁移升级通知

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