必须先用df -h锁定真实爆满分区,再分层用du定位大目录;重点检查/www/backup、/var/log/journal、default.db等典型膨胀点,清理前需确认可删性并预留足够空间执行VACUUM。

磁盘占满时,df -h 显示的高占用分区必须先确认,否则在 /www 里狂删备份,可能根本没动到真正吃空间的 /var 或根分区。
先用 df -h 锁定真实爆满分区
宝塔终端里执行 df -h,盯紧 Use% 列——超过 90% 的那个 Mounted on 路径才是主战场。常见情况有三种:/(系统根分区)、/www(宝塔默认网站根)、/var(日志和数据库常驻地)。如果 Mounted on 是空的,比如只显示 /dev/vdb1,说明这是一块未挂载的闲置盘,跟当前问题无关。
用 du 分层下钻,别扫全盘
du -sh /* 2>/dev/null | sort -hr | head -10 这类命令看着高效,但实际容易漏掉深层嵌套的大目录。更稳妥的做法是分两步:先看一级目录谁最大,再进它里面查二级。例如:
- 若
df -h显示/占满,先跑du -sh /* 2>/dev/null | sort -hr | head -10 - 发现
/var异常大,立刻跟进du -sh /var/* 2>/dev/null | sort -hr | head -10 - 若看到
/var/log/journal或/var/lib/docker突出,就不用再往下扫了
重点盯住:/www/backup(旧备份堆叠)、/www/Recycle_bin(回收站物理文件未删)、/www/server/data/mysql-bin.*(MySQL binlog 不关会涨到几十 GB)。
清理历史备份前,先确认是否真能删
宝塔【计划任务】里设置的自动备份,路径默认是 /www/backup,但有些用户手动改过路径,或用第三方脚本存到 /home/backup、/data/backup 等位置。直接删 /www/backup 可能漏掉关键备份,也可能误删正在使用的增量备份链。操作前务必:
- 进宝塔【计划任务】页面,核对每个备份任务的“备份目录”字段
- 检查
/www/backup下子目录名是否含日期或站点名,避免删错活跃备份 - 用
ls -lt /www/backup | head -5看最新几个备份的时间,确认是否已过保留周期
安全清理命令是:find /www/backup -name "*.tar.gz" -mtime +30 -delete(删 30 天前的 gzip 包),比 rm -rf /www/backup/* 更可控。
default.db 和 system.db 占几十 GB 怎么办
这是宝塔面板自身 SQLite 数据库膨胀导致的,最典型的是 /www/server/panel/data/default.db 里的 boce_list 表,记录所有访问行为却从不自动清理。删表数据后空间不释放,是因为 SQLite 不会自动收缩文件体积——必须手动执行 VACUUM。
操作步骤:
- 停宝塔:
bt stop - 进入数据库目录:
cd /www/server/panel/data - 用 SQLite 命令行执行:
sqlite3 default.db "VACUUM;" - 重启面板:
bt start
注意:VACUUM 会锁表并临时占用等量磁盘空间,确保清理前有至少与 default.db 当前大小相等的可用空间,否则命令会失败且数据库可能损坏。











