服务器磁盘清理总结
目标:在不动网站(宝塔 PHP)、运行中的 Docker 容器、Hermes 运行时的前提下,安全释放服务器磁盘空间。
一、起点与终点
二、清理明细(按执行顺序)
① Tier 1 + Tier 2 — 缓存/日志/迁移残留(释放 ≈ 4GB)
Docker build cache 193MB、悬空镜像 100MB
npm 缓存 338MB、node-gyp 缓存 54MB、Hermes uv 缓存 415MB
宝塔 wwwlogs 活动日志截断 167MB
.hermes/migration迁移残留 1.2GB旧 skill curator 备份(保留最新一份)714MB
node.backup200MB结果:44G → 40G(72% → 67%)
② Tier 3 — 个人开发工具链(释放 ≈ 4GB)
~/.nvm1.7G、~/.rustup1.5G、~/miniconda1.4G、~/.cargo270M、~/.bun193M确认无任何运行进程/网站依赖后删除
结果:40G → 36G(67% → 59%)
③ Tier 4 — 未引用的 Docker 镜像(释放 ≈ 1GB)
删除 9 个未被任何容器/compose 引用的镜像:sub2api、postgres:18-alpine、redis:8-alpine、ubuntu:24.04、golang:1.23-alpine、watchtower、alpine:3.20、docker/dockerfile:1、hello-world
结果:36G → 35G(59% → 58%)
④ Tier 5-7 — 深度清理(释放 ≈ 2.3GB)
Docker 容器日志(json.log)截断:1.5GB → 424K(其中
xianyu-scheduler单容器占 1.3GB)/var/log旧轮转日志 + btmp + jcloud 日志:800M → 50Mdnf 缓存:28M → 0
结果:35G → 33G(58% → 54%)
三、关键安全动作与踩坑
⚠️ 扫描脚本 bug 拦截:首版“未使用镜像”判定因 Docker 短 ID(12 位)与
inspect完整 ID(64 位)不匹配,会把全部 22 个镜像误判为未使用。发现后改用 repo:tag 精准比对,显式跳过被容器引用的镜像,避免误删 13 个运行容器镜像。所有对数/日志操作均用
truncate -s 0(保留文件句柄,服务不中断),而非rm(会 orphan fd、容器重启前不释放)。全程校验:13 个容器始终运行、宝塔 PHP(70/72/74/81/82)与 Hermes 进程(17 个)完好。

