WordPress 云服务器系统盘(通常是 / 根分区)快满了,是常见但需及时处理的问题。以下是系统化的排查与解决方案,帮你快速定位原因并安全清理:
🔍 一、快速诊断:找出“吃磁盘”的元凶
-
登录服务器(SSH)
ssh user@your-server-ip -
查看磁盘使用情况
df -h # 查看各分区使用率(重点关注 / 或 /dev/vda1) du -sh /* 2>/dev/null | sort -hr | head -10 # 查看根目录下大目录 -
深入分析大目录(重点检查以下路径)
# WordPress 相关日志和缓存(最常见罪魁祸首!) du -sh /var/log/* | sort -hr | head -5 du -sh /var/www/html/wp-content/cache* # WP Super Cache / WP Rocket 缓存 du -sh /var/www/html/wp-content/updraft/ # UpdraftPlus 备份(常被忽略!) du -sh /tmp/ # 临时文件(含 WordPress 临时更新包、插件解压残留等) # 系统级常见大户 du -sh /var/lib/docker/ # 若启用了 Docker(如宝塔、Docker 部署 WP) du -sh /var/cache/apt/ # Ubuntu/Debian 的 apt 缓存(可安全清理)
🧹 二、安全清理建议(按优先级排序)
| 类别 | 操作 | 是否推荐 | 注意事项 |
|---|---|---|---|
| ✅ WordPress 插件备份 | rm -rf /var/www/html/wp-content/updraft/* |
⚠️ 高风险!先确认已备份到远程(如 Dropbox/S3) | UpdraftPlus 默认本地保留多份备份,极易占满磁盘 |
| ✅ Web 服务器日志 | sudo journalctl --disk-usage → 清理旧日志:sudo journalctl --vacuum-time=7d或清空 Nginx/Apache 日志: sudo truncate -s 0 /var/log/nginx/*.log |
✅ 安全推荐 | 避免直接 rm,用 truncate 更安全;建议配置 logrotate |
| ✅ WP 缓存目录 | 删除插件缓存(如 WP Super Cache 的 wp-content/cache/) |
✅ 推荐 | 缓存可重建,删除后前台会短暂变慢,自动恢复 |
| ✅ 系统临时文件 | sudo rm -rf /tmp/* & sudo apt clean(Ubuntu/Debian) |
✅ 推荐 | /tmp 重启后通常清空,但长期运行可能堆积 |
| ✅ PHP 会话 & OPcache 日志 | sudo find /var/lib/php/sessions -type f -mtime +30 -delete |
✅ 推荐 | 清理 30 天前的过期 session 文件 |
❗ 严禁操作:
- 不要
rm -rf /var/www/html或误删wp-config.php- 不要随意
rm -rf /var/lib/mysql(除非你有完整数据库备份)- 不要删除
/etc/、/boot/、/usr/下未知文件
🛡️ 三、长期防护策略(防复发)
-
设置日志自动轮转(Logrotate)
示例:为 Nginx 日志添加/etc/logrotate.d/nginx:/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0644 www-data www-data sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript } -
限制 UpdraftPlus 本地备份数量
进入 WordPress 后台 → UpdraftPlus → Settings → “Maximum number of backups to keep locally” → 设为1或0(仅远程) -
监控告警(推荐)
- 使用宝塔面板 → “计划任务” 添加定时检测脚本(发送邮件告警)
- 或用
cron+df自动提醒:# 编辑 crontab:crontab -e 0 9 * * * df -h / | awk 'NR==2 {if($5 > 85) print "ALERT: Root disk usage is "$5 | "mail -s 'Disk Full Alert' admin@example.com"}'
-
升级磁盘 or 迁移数据(终极方案)
- 云厂商支持「在线扩容」(如阿里云/腾讯云控制台扩容系统盘 → SSH 执行
resize2fs /dev/vda1) - 或将
wp-content(尤其uploads/,cache/,backups/)挂载到独立数据盘(更安全、易扩展)
- 云厂商支持「在线扩容」(如阿里云/腾讯云控制台扩容系统盘 → SSH 执行
💡 附:一键诊断脚本(复制粘贴运行)
#!/bin/bash
echo "=== 磁盘总览 ==="; df -h | grep -E "(Filesystem|/)"; echo
echo "=== 顶级大目录(/)==="; du -sh /* 2>/dev/null | sort -hr | head -10; echo
echo "=== WordPress 关键路径 ==="
[ -d "/var/www/html/wp-content" ] && echo "→ wp-content: $(du -sh /var/www/html/wp-content 2>/dev/null)"
[ -d "/var/www/html/wp-content/updraft" ] && echo "→ updraft backups: $(du -sh /var/www/html/wp-content/updraft 2>/dev/null)"
[ -d "/var/www/html/wp-content/cache" ] && echo "→ cache: $(du -sh /var/www/html/wp-content/cache 2>/dev/null)"
echo "→ /tmp: $(du -sh /tmp 2>/dev/null)"
echo "→ /var/log: $(du -sh /var/log 2>/dev/null)"
✅ 最后建议操作顺序:
- 先
df -h确认是否真满(>90% 需立即处理) - 重点查
/var/www/html/wp-content/updraft/和/var/log/ - 清理后
df -h验证效果 - 配置 logrotate + 限制本地备份 + 添加监控
如需进一步帮助(例如:你执行 df -h 的输出结果 / 云平台类型 / 是否用宝塔),欢迎贴出来,我帮你定制清理命令 👇
需要我帮你写一个自动清理+告警的 Bash 脚本,也可以随时告诉我! 🌟
CLOUD云