wordpress云服务器系统盘快满了?

WordPress 云服务器系统盘(通常是 / 根分区)快满了,是常见但需及时处理的问题。以下是系统化的排查与解决方案,帮你快速定位原因并安全清理:


🔍 一、快速诊断:找出“吃磁盘”的元凶

  1. 登录服务器(SSH)

    ssh user@your-server-ip
  2. 查看磁盘使用情况

    df -h  # 查看各分区使用率(重点关注 / 或 /dev/vda1)
    du -sh /* 2>/dev/null | sort -hr | head -10  # 查看根目录下大目录
  3. 深入分析大目录(重点检查以下路径)

    # 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/ 下未知文件

🛡️ 三、长期防护策略(防复发)

  1. 设置日志自动轮转(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
    }
  2. 限制 UpdraftPlus 本地备份数量
    进入 WordPress 后台 → UpdraftPlus → Settings → “Maximum number of backups to keep locally” → 设为 10(仅远程)

  3. 监控告警(推荐)

    • 使用宝塔面板 → “计划任务” 添加定时检测脚本(发送邮件告警)
    • 或用 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"}'
  4. 升级磁盘 or 迁移数据(终极方案)

    • 云厂商支持「在线扩容」(如阿里云/腾讯云控制台扩容系统盘 → SSH 执行 resize2fs /dev/vda1
    • 或将 wp-content(尤其 uploads/, cache/, backups/)挂载到独立数据盘(更安全、易扩展)

💡 附:一键诊断脚本(复制粘贴运行)

#!/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)"

最后建议操作顺序

  1. df -h 确认是否真满(>90% 需立即处理)
  2. 重点查 /var/www/html/wp-content/updraft//var/log/
  3. 清理后 df -h 验证效果
  4. 配置 logrotate + 限制本地备份 + 添加监控

如需进一步帮助(例如:你执行 df -h 的输出结果 / 云平台类型 / 是否用宝塔),欢迎贴出来,我帮你定制清理命令 👇

需要我帮你写一个自动清理+告警的 Bash 脚本,也可以随时告诉我! 🌟