必须先用 df -h 确认真正占满的分区(如 / 或 /www),再用 du -sh / 或 /www/ 分层定位大目录,重点清理 backup、Recycle_bin、mysql-bin.* 等,清空回收站需手动验证,日志清理须按类型区别处理,SQLite 数据库删表后需执行 vacuum。

确认哪个分区真满了,别在错误路径上瞎折腾
磁盘占满时最常犯的错,就是看到“磁盘已满”就冲进 /www 狂删,结果发现真正吃掉空间的是 /var 或系统根分区。必须先看准位置,否则删半天网站日志,/dev/vda1 还是 98%。
- 打开宝塔【终端】,直接运行
df -h,盯住Use%列 —— 超过 90% 的那个Filesystem才是主战场 - 记下它对应的
Mounted on路径,比如是/还是/www,后面所有操作都从这里开始 - 如果显示
/dev/vdb1已满但Mounted on是空的,说明这是未挂载的闲置盘,和当前问题无关
用 du 快速定位最大目录,跳过全盘扫描
du -sh /* 一顿乱扫既慢又容易被干扰,真实场景里要分层下钻:先看一级目录谁最大,再进它里面看二级,像剥洋葱一样收窄范围。
- 若
df -h显示/满了:运行du -sh /* 2>/dev/null | sort -hr | head -10 - 若满的是
/www:改用du -sh /www/* 2>/dev/null | sort -hr | head -10 - 常见“空间杀手”有:
/www/backup(旧备份堆成山)、/www/Recycle_bin(回收站不清理=物理文件照常占空间)、/www/server/data(MySQL binlog 不关会涨到几十 GB)
别信“清空回收站”按钮能彻底释放空间
宝塔面板点【清空回收站】后,有些服务器仍显示磁盘没松动 —— 很可能是因为权限不足或进程锁住文件,导致删除失败但界面没报错。
- 先手动检查:执行
ls -lh /www/Recycle_bin/,如果输出非空,说明清空没生效 - 强制清理命令(确保无误删风险后再执行):
rm -rf /www/Recycle_bin/* - 注意:
/www/Recycle_bin是宝塔专用路径,不是系统回收站,删它不影响其他服务
日志清理不能只靠“一键”,得区分类型和风险
网站日志、MySQL binlog、systemd journal,三者清理逻辑完全不同:一个可直接删,一个删前必须停服务,一个要用专用命令截断。
-
/www/wwwlogs/*.log:安全,可全选删除;但更推荐cat /dev/null > site.log清空内容(保留文件句柄,不中断 Nginx 写入) -
/www/server/data/mysql-bin.*:必须先在【软件商店】停 MySQL,再删,否则重启后可能无法启动 -
journalctl日志:用journalctl --vacuum-size=100M限制总量,别用rm -rf /var/log/journal,会破坏 systemd 日志索引
真正卡住人的,往往不是找不到大文件,而是删完发现空间没回来 —— SQLite 数据库(如 /www/server/panel/data/default.db)删表后不自动收缩,vacuum 命令又得进数据库执行,这步最容易被跳过。

















