← 戻る

ディスクを整理

apt キャッシュ・不要な依存・journal ログ・古い /tmp ファイル・Docker の未使用イメージを整理します。/home と業務ディレクトリには触れません。

root が必要

ワンライン実行

curl -fsSL https://www.moiu.cn/scripts/disk-cleanup.sh | bash

ソース

#!/usr/bin/env bash
# 磁盘清理
#
# 清 apt 缓存、无用依赖、journal 日志、/tmp 陈旧文件、
# Docker 悬空镜像与构建缓存。前后各报一次磁盘占用。
# ❗ 不碰 /home,也不碰任何业务目录。

set -e

# 需要 root:下面的系统级改动都直接执行,不再逐条 sudo
if [ "$(id -u)" -ne 0 ]; then
    echo '[!] 这个脚本需要 root 权限,请用 sudo 重新运行:'
    echo '    curl -fsSL 脚本地址 | sudo bash'
    echo '    或已经下载到本地:sudo bash 本文件'
    exit 1
fi

echo '====== 磁盘清理 ======'
echo ''
echo '--- 清理前 ---'
df -h / | awk 'NR == 1 || $NF == "/"'

if command -v apt-get >/dev/null 2>&1; then
    echo ''
    echo '[*] 清理 apt 缓存与无用依赖...'
    apt-get autoremove -y
    apt-get clean
fi

if command -v journalctl >/dev/null 2>&1; then
    echo ''
    echo '[*] 把 journal 日志压到 200M...'
    journalctl --vacuum-size=200M || true
fi

echo ''
echo '[*] 清理 /tmp 里 7 天没动过的东西...'
find /tmp -mindepth 1 -mtime +7 -exec rm -rf {} + 2>/dev/null || true

if command -v docker >/dev/null 2>&1; then
    echo ''
    echo '[*] 清理 Docker 悬空镜像与构建缓存...'
    docker image prune -f
    docker builder prune -f
fi

echo ''
echo '--- 清理后 ---'
df -h / | awk 'NR == 1 || $NF == "/"'

元ファイルをダウンロード