宝塔面板批量清理网站垃圾缓存与日志
宝塔面板如何批量清理网站垃圾缓存与日志
服务器运行一段时间后,各网站的缓存文件、访问日志和系统日志会占用大量磁盘空间。
宝塔面板虽然提供了单站点清理功能,但面对几十个站点时手动操作非常低效。
本文从零开始,教你用两种方法(手动+脚本)批量清理,帮你彻底释放磁盘压力。
准备工作:确认空间占用和目录分布
开始操作前,先用下面的命令查看当前磁盘使用情况,确定哪些目录占用了空间:
df -h
然后进入宝塔的站点根目录(默认 /www/wwwroot),执行 du -sh * | sort -rh | head -20 快速找到体积最大的站点。
常见垃圾文件集中在这几个位置:
- WordPress 缓存目录:
/www/wwwroot/站点目录/wp-content/cache/ - Nginx 访问日志:
/www/wwwlogs/(每个站点有独立的 .log 文件) - PHP 会话文件(session):
/tmp/sess_*或/www/server/php/版本/var/session/ - 网站后台生成的临时文件:如 Runtime、temp、data/temp 等
注意:不要随意删除非缓存目录下的文件,以免破坏网站正常运行。
方法一:手动批量清理(新手首选)
进入宝塔面板左侧菜单栏的“文件”功能,在 /www/wwwroot 下可以同时选中多个站点目录,但逐个进入再删除缓存比较繁琐。
更快的做法是:
- 点击“终端”(或通过 SSH 登录服务器)。
- 执行以下命令一键删除所有 WordPress 站点下的缓存目录:
for dir in /www/wwwroot/*/wp-content/cache; do
if [ -d "$dir" ]; then
echo "正在清理: $dir"
rm -rf "$dir"
mkdir -p "$dir"
fi
done
这条命令会遍历每个站点,如果存在 wp-content/cache 目录就删除它的所有内容,再重建一个空目录(防止权限问题)。
清理 Nginx 日志也可以批量操作:
# 清空所有 .log 文件但保留文件本身(避免日志收集工具报错)
truncate -s 0 /www/wwwlogs/*.log
如果日志文件不再需要,可以直接删除并重建空日志:
rm -f /www/wwwlogs/*.log
touch /www/wwwlogs/空的日志文件.log
方法二:使用 Shell 脚本一键清理(推荐设置计划任务)
如果你经常需要清理,写一个 Shell 脚本并设置宝塔的计划任务每月自动执行,既省力又避免忘记。
创建清理脚本
在 /root 目录下创建 clean_cache.sh 文件:
#!/bin/bash
# 清理所有站点的缓存和日志(宝塔环境)
# 1. 清理 WordPress 缓存
echo "=== 清理 WordPress 缓存 ==="
for cache_dir in /www/wwwroot/*/wp-content/cache; do
if [ -d "$cache_dir" ]; then
rm -rf "$cache_dir"/*
echo "已清理: $cache_dir"
fi
done
# 2. 清理 Nginx 访问日志(仅保留最近 7 天)
echo "=== 清理日志 ==="
find /www/wwwlogs -name "*.log" -type f -mtime +7 -exec rm -f {} \;
# 3. 清理 PHP 会话文件(超过 30 天未使用的)
echo "=== 清理旧会话 ==="
find /tmp -name "sess_*" -type f -mtime +30 -delete
# 4. 清理各个站点的 Runtime、temp 目录(常见于 ThinkPHP 等框架)
echo "=== 清理框架临时文件 ==="
find /www/wwwroot -type d -name "temp" -exec rm -rf {}/* \;
find /www/wwwroot -type d -name "Runtime" -exec rm -rf {}/* \;
find /www/wwwroot -type d -name "cache" ! -path "*/wp-content/cache*" -exec rm -rf {}/* \;
echo "=== 清理完成 ==="
保存后赋予执行权限:
chmod +x /root/clean_cache.sh
在宝塔面板中添加计划任务
- 进入宝塔面板 → “计划任务” → “添加计划任务”。
- 任务类型选择 Shell 脚本,任务名称填写“批量清理缓存与日志”。
- 执行周期选“每月”(例如每月1日凌晨4点),脚本内容输入:
bash /root/clean_cache.sh
- 点击“添加”即可。之后每月脚本会自动运行一次,清理过期文件。
避坑指南:常见错误与注意事项
- 不要删除 .user.ini 或 .htaccess 文件:这些是网站伪静态配置文件,误删可能导致网站 500 错误。
- 清理前确认是否需要保留日志:如果网站有安全审计要求,建议用
truncate代替rm,或者只删除超过指定天数的日志。 - 某些缓存插件(如 WP Rocket)会生成 .htaccess 规则:如果删除缓存目录后访问异常,请先在后台清除缓存或重新激活插件。
- 脚本中的
find命令不要写错路径:-exec rm -f {} \;注意分号和反斜杠之间有一个空格,否则会报错。 - 执行权限问题:确保脚本和计划任务以 root 用户运行,否则可能无法删除
/www/server/php下的 session 文件。
效果验证:确认释放了多少空间
运行脚本或手动操作后,重新执行 df -h 对比清理前后磁盘使用率。
你也可以单独查看各日志目录的大小:
du -sh /www/wwwlogs/
du -sh /www/wwwroot/*/wp-content/cache/
正常情况下,WordPress 缓存目录能释放几百 MB 到数 GB,日志文件根据访问量也能释放数十 GB。
如果发现清理后某个网站页面变慢,检查该网站是否启用了 CDN 或缓存插件,重新生成缓存即可。
高频问题解答
Q:为什么不直接在宝塔后台“清理”按钮?
A:宝塔的清理按钮只能针对单个站点的部分缓存(如 WordPress 缓存、网站日志),无法自定义深度清理临时目录和日志,也无法批量处理所有站点。
Q:清理后网站图片等静态资源显示异常怎么办?
A:可能是你删除了生成缩略图的缓存文件夹(如 thumb 或 thumbnail)。这类文件夹不要在脚本中统一删除,建议只删除明确已知的缓存目录。
Q:脚本可以放到宝塔定时任务中每天执行吗?
A:可以,建议每周或每月一次,过于频繁会让缓存插件不断重建缓存,增加服务器负载。日志文件每天滚动时自动压缩,删除过旧日志比较合适。
如果你正在处理宝塔面板批量清理网站垃圾缓存与日志,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。