#!/bin/bash # 安全清理随身 WiFi 上的垃圾。 # # 原则:先看清楚再删,删之前把「为什么它一定是垃圾」写下来。 # 中转相关的目录(/root/lanremote-relay、/root/.cloudflared)一律不碰。 set -u BEFORE=$(df -m / | awk 'NR==2 {print $4}') echo "════════ 清理前:可用 ${BEFORE} MB ════════" echo echo "════════ 0. 先看 nginx 到底在提供什么(决定动不动它)════════" echo " 在跑: $(systemctl is-active nginx)" echo " 根目录配置:" grep -hE '^\s*(root|server_name|listen)' /etc/nginx/sites-enabled/* /etc/nginx/conf.d/*.conf 2>/dev/null | head -10 | sed 's/^/ /' echo " /var/www 内容:" ls -1 /var/www 2>/dev/null | sed 's/^/ /' echo " 首页大小: $(stat -c%s /var/www/html/index.nginx-debian.html 2>/dev/null || echo 0) 字节" echo " → 这是 Debian 装 nginx 的默认欢迎页,和中转无关。" echo " **但为了安全我不删 nginx**(万一有人拿它做别的),只报告。" echo echo "════════ 1. 删 /var/lib/mysql(113 MB)════════" echo " 依据:" echo " * dpkg 里没有任何 mysql/mariadb 包(0 个已安装)" echo " * 没有任何 mysqld 进程" echo " * 没有 mariadb/mysql 的 systemd 服务" echo " → 这是历史遗留的数据目录,包都卸了,目录没删干净。" if [ -d /var/lib/mysql ]; then echo " 删除前确认没有进程占用: $(fuser -m /var/lib/mysql 2>/dev/null | wc -l) 个" if [ "$(pgrep -c -f 'mysqld|mariadb' 2>/dev/null || echo 0)" -eq 0 ] \ && [ "$(dpkg -l 2>/dev/null | grep -cE '^ii +(mysql-server|mariadb-server)')" -eq 0 ]; then rm -rf /var/lib/mysql echo " ✓ 已删除 /var/lib/mysql" else echo " ! 检测到 mysql 相关包或进程,**跳过**(安全第一)" fi else echo " (不存在,跳过)" fi echo echo "════════ 2. 清 apt 缓存和索引(约 162 MB)════════" echo " 依据:/var/cache/apt 是已下载的 .deb 缓存,随时可重下;" echo " /var/lib/apt/lists 是索引,apt update 会重建。" apt-get clean 2>/dev/null rm -rf /var/lib/apt/lists/* 2>/dev/null echo " ✓ 已清理" echo echo "════════ 3. 压缩 journald 日志(约 10 MB)════════" journalctl --vacuum-size=8M 2>&1 | tail -2 | sed 's/^/ /' echo echo "════════ 4. 清理我遗留的调试脚本(173 个)════════" echo " 这些是我这几次调试时上传到 /root 的临时脚本(ab*.sh、bench.sh 等)," echo " 中转本身不需要它们。" echo " ⚠ 保留:中转目录、.cloudflared、以及任何看起来像正式运维脚本的" n=$(ls -1 /root/*.sh /root/*.py 2>/dev/null | wc -l) echo " 清理前: $n 个" mkdir -p /root/.trash-debug # 只移动我确定是调试用的(a开头/ab开头/bench/check开头等),保留其他 for f in /root/a*.sh /root/ab*.sh /root/bench*.sh /root/check_*.sh /root/diag_*.sh \ /root/dl*.sh /root/final*.sh /root/post_*.sh /root/probe*.py /root/smart_*.sh \ /root/setup_*.sh /root/test_*.sh /root/why_*.sh /root/fa*.sh /root/tc*.sh \ /root/cc*.sh /root/sa*.sh /root/sq.sh /root/dc.sh /root/vc*.sh; do [ -f "$f" ] && mv "$f" /root/.trash-debug/ 2>/dev/null done moved=$(ls -1 /root/.trash-debug 2>/dev/null | wc -l) echo " 已移走 $moved 个到 /root/.trash-debug(先不真删,确认没问题再删)" echo " /root 下剩余: $(ls -1 /root/*.sh /root/*.py 2>/dev/null | wc -l) 个" echo echo "════════ 5. 中转目录(绝对不动)════════" du -sh /root/lanremote-relay /root/.cloudflared 2>/dev/null | sed 's/^/ /' echo " → 这两个是命根子,一个字节都没碰" echo AFTER=$(df -m / | awk 'NR==2 {print $4}') echo "════════ 结果 ════════" echo " 可用空间: ${BEFORE} MB -> ${AFTER} MB (腾出 $((AFTER - BEFORE)) MB)" df -h / | sed 's/^/ /' echo echo " 磁盘总览:" du -xhd1 / 2>/dev/null | sort -rh | head -8 | sed 's/^/ /'