---
title: Debian 清理指南：日志、缓存、旧内核与 Docker 资源
description: 长期运行的 Debian 系统中，系统日志、包管理器缓存、内核遗留文件和容器数据…
url: "https://brimflow.xyz/docs/operations/debian-clean-guide/"
updated: "2025-12-23"
category: 运维
---

# Debian 清理指南：日志、缓存、旧内核与 Docker 资源

长期运行的 Debian 系统中，系统日志、包管理器缓存、内核遗留文件和容器数据会逐渐积累，占据大量磁盘空间。Debian 清理指南汇总了关键的空间清理策略，附带自动化脚本，适用于日常维护与周期性执行。

## 1. 清理系统日志

### 查看日志占用空间：

 Bash

```
journalctl --disk-usage
```

### 清理旧日志：

保留最近 7 天的日志：

 Bash

```
sudo journalctl --vacuum-time=7d
```

限制总占用为 100MB：

 Bash

```
sudo journalctl --vacuum-size=100M
```

### 配置日志占用限制（可选）：

编辑 `/etc/systemd/journald.conf`：

 Plaintext

```
[Journal]
SystemMaxUse=100M
SystemKeepFree=500M
MaxFileSec=1month
```

应用配置：

 Bash

```
sudo systemctl restart systemd-journald
```

⚠️ **注意**：不要直接删除 `/var/log/journal/` 目录，可通过压缩方式备份旧日志：

 Bash

```
sudo tar --warning=no-file-changed -czf ~/journal-backup-$(date +%F-%H:%M:%S).tar.gz /var/log/journal
```

## 2. 清理 APT 包管理器缓存

 Bash

```
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove -y
```

适用于清理缓存安装包、过期软件与不再使用的依赖项。

## 3. 清理旧内核与源码

### 删除旧内核（保留当前版本）：

 Bash

```
uname -r  # 查看当前内核
dpkg --list | grep linux-image
```

确认无用版本后：

 Bash

```
sudo apt-get remove linux-image-<旧版本>
```

### 清理旧的内核源码（`/usr/src`）：

 Bash

```
CURRENT_KERNEL=$(uname -r)
for dir in /usr/src/*; do
    if [[ "$dir" != "/usr/src/linux-$CURRENT_KERNEL" ]]; then
        sudo rm -rf "$dir"
    fi
done
```

⚠️ **注意**：请勿删除当前内核或 `/usr/lib`、`/usr/bin` 等核心路径。

## 4. Docker 清理

### 查看空间使用：

 Bash

```
docker system df
```

### 清理无用资源：

 Bash

```
docker system prune -a --volumes
docker builder prune -a
```

⚠️ **注意**：`docker system prune -a --volumes` 会删除所有未使用资源，确认无重要数据。

### 日志限制（可选）：

编辑 `/etc/docker/daemon.json`：

 Bash

```
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
```

重启服务：

 Bash

```
sudo systemctl restart docker
```

## 5. 清理临时与缓存目录

 Bash

```
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
sudo rm -rf /root/.cache/*
sudo rm -rf /root/.npm/_cacache
sudo rm -rf /root/.cargo/registry
```

建议定期执行，防止构建工具和脚本生成的缓存持续积累。

## 6. 查找大文件（仅展示）

 Bash

```
sudo find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k 5 -rh | head -n 10
```

适合辅助检查空间占用异常位置，避免误删。

## 7. 自动清理脚本

建议使用以下脚本完成一键清理操作。保存为 `debian-clean-all.sh`：

 Bash

```
#!/bin/bash
# 全面清理 Debian 系统空间占用

set -e

BACKUP_DIR="backup-journal"
TIMESTAMP=$(date +%F.%H-%M-%S)
LOG_BACKUP="$BACKUP_DIR/journal-$TIMESTAMP.tar.gz"

# 检查是否以 root 权限运行
if [[ $EUID -ne 0 ]]; then
   echo "请使用 root 权限或 sudo 运行此脚本"
   exit 1
fi

echo "正在备份日志..."
mkdir -p "$BACKUP_DIR"
if ! tar --warning=no-file-changed -czf "$LOG_BACKUP" /var/log/journal; then
    read -p "日志备份失败，是否继续执行清理操作？(y/n): " confirm
    if [[ "$confirm" != "y" ]]; then
        echo "操作已取消。"
        exit 0
    fi
fi

# 1. 清理 APT 缓存
echo "正在清理过期和冗余的软件包..."
apt-get autoremove -y   # 删除不再需要的依赖包
apt-get autoclean -y    # 删除旧版本的软件安装包
apt-get clean           # 删除 /var/cache/apt/archives/ 下的所有包

# 2. 清理日志文件 (保留最近 3 天)
if command -v journalctl >/dev/null; then
    echo "正在压缩并清理 systemd 日志..."
    journalctl --vacuum-time=3d
fi

# 3. 清理旧的核心文件 (如果有的话)
echo "正在清理旧的内核文件..."
# 注意：这通常由 autoremove 处理，但手动触发更稳妥
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V \
    | sed -n '/'"$(uname -r | sed "s/-.*//")"'/q;p' \
    | xargs apt-get -y purge

# 4. 清理临时目录
echo "正在清理 /tmp 目录..."
find /tmp -type f -atime +2 -delete

# 5. 清理用户缓存 (针对所有用户)
echo "正在清理用户级缓存..."
rm -rf /home/*/.cache/*
rm -rf /root/.cache/*

# 6. 清理 Docker (如果安装了 Docker)
if command -v docker >/dev/null; then
    echo "检测到 Docker，正在清理未使用的镜像和容器..."
    docker system prune -af --volumes
    docker builder prune -af
fi

echo "--- 磁盘清理完成！ ---"
df -h
```

### 使用方式：

 Bash

```
sudo chmod +x debian-clean-all.sh
sudo ./debian-clean-all.sh
```

### 设置定期执行（可选）：

使用 `crontab -e` 添加：

 Bash

```
0 4 1 * * /path/to/debian-clean-all.sh
```

表示每月 1 日凌晨 4 点自动运行。

## 8. 注意事项

- 清理前请备份系统关键日志与数据；
- 不要删除当前内核或核心路径下文件；
- `docker system prune -a --volumes` 会删除所有未使用镜像与卷，请慎用；
- 脚本默认使用 `sudo`，请以具备权限的用户运行；
- 清理后可通过 `df -h`、`journalctl --disk-usage` 等命令验证效果。

Debian 清理指南适用于稳定运行的 Debian 服务器或开发环境，旨在通过周期性维护确保磁盘空间健康。如需更复杂的自动化机制，可集成 systemd timer 或 DevOps 工具链执行。

 Docker: [Prune unused Docker objects](https://docs.docker.com/engine/manage-resources/pruning/), Linux manual page: [journalctl(1)](https://man7.org/linux/man-pages/man1/journalctl.1.html)
