这两个目录是 Debian 系统中常见的大户,进一步清理可以重点针对它们。


1. /usr 目录清理建议

/usr 主要存放系统程序和共享资源,通常包含:

  • /usr/share/doc:软件说明文档
  • /usr/share/man:手册页
  • /usr/share/locale:多语言本地化文件
  • /usr/share/fonts:字体文件
  • /usr/lib:库文件和程序文件
  • /usr/bin/usr/sbin:可执行文件

清理重点

  • 删除说明文档和手册页

    rm -rf /usr/share/doc/*
    rm -rf /usr/share/man/*
    rm -rf /usr/share/info/*
    
  • 删除不需要的语言文件

    如果只需要简体中文(zh_CN)和英文(en),可以删除其他语言的本地化文件:

    find /usr/share/locale -mindepth 1 -maxdepth 1 ! -name "zh_CN" ! -name "en" -exec rm -rf {} +
    
  • 字体清理

    同之前脚本,保留简体中文和英文字体,删除其他字体。

  • 检查大文件

    你可以用如下命令列出 /usr 下大于 10MB 的文件,确认是否有可删文件:

    find /usr -type f -size +10M -exec ls -lh {} \;
    

2. /var 目录清理建议

/var 目录通常包含:

  • /var/cache:缓存文件
  • /var/log:日志文件
  • /var/lib:应用程序数据
  • /var/tmp:临时文件

清理重点

  • 清理 apt 缓存

    apt-get clean
    rm -rf /var/cache/apt/archives/*
    
  • 清理日志

    journalctl --vacuum-size=50M || true
    rm -rf /var/log/*.gz /var/log/*.1
    find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;
    
  • 清理临时文件

    rm -rf /var/tmp/*
    rm -rf /tmp/*
    
  • 清理备份

    rm -rf /var/backups/*
    
  • 删除残留旧配置

    dpkg -l | grep '^rc' | awk '{print $2}' | xargs -r dpkg --purge
    

3. 综合清理脚本示例(针对 /usr/var

#!/bin/bash
set -e
echo "=== 针对 /usr 和 /var 的清理开始 ==="

# 清理说明文档和手册页
echo "删除 /usr/share/doc、man、info..."
rm -rf /usr/share/doc/*
rm -rf /usr/share/man/*
rm -rf /usr/share/info/*

# 删除非简体中文和英文语言包
echo "删除非 zh_CN 和 en 的语言包..."
find /usr/share/locale -mindepth 1 -maxdepth 1 ! -name "zh_CN" ! -name "en" -exec rm -rf {} +

# 清理字体,保留简体中文和英文字体
echo "清理字体..."
FONT_DIRS=("/usr/share/fonts" "/usr/local/share/fonts")
CHINESE_FONT_KEYWORDS=("NotoSansCJK" "WenQuanYi" "AR PL" "SourceHan" "DroidSansFallback")
EN_FONT_KEYWORDS=("DejaVu" "Liberation" "Nimbus" "FreeSans" "Arial" "Times" "Courier")

for dir in "${FONT_DIRS[@]}"; do
  if [ -d "$dir" ]; then
    find "$dir" -type f \( -name "*.ttf" -o -name "*.otf" \) | while read -r fontfile; do
      keep_font=false
      for keyword in "${CHINESE_FONT_KEYWORDS[@]}" "${EN_FONT_KEYWORDS[@]}"; do
        if echo "$fontfile" | grep -qi "$keyword"; then
          keep_font=true
          break
        fi
      done
      if [ "$keep_font" = false ]; then
        echo "删除字体: $fontfile"
        rm -f "$fontfile"
      fi
    done
  fi
done

# 清理 apt 缓存
echo "清理 apt 缓存..."
apt-get clean
rm -rf /var/cache/apt/archives/*

# 清理日志文件
echo "清理日志文件..."
journalctl --vacuum-size=50M || true
rm -rf /var/log/*.gz /var/log/*.1
find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;

# 清理临时文件
echo "清理临时文件..."
rm -rf /var/tmp/*
rm -rf /tmp/*

# 删除备份文件
echo "删除备份文件..."
rm -rf /var/backups/*

# 删除残留旧配置文件
echo "删除残留旧配置文件..."
dpkg -l | grep '^rc' | awk '{print $2}' | xargs -r dpkg --purge

echo "=== 清理完成 ==="

4. 进一步建议

  • 可以安装并使用 ncdu 交互式查看 /usr/var 的具体子目录占用,找到最大的目录或文件:

    sudo apt-get install ncdu
    sudo ncdu /usr
    sudo ncdu /var
    
  • 如果有不常用的软件包,考虑卸载以释放空间。

  • 如果系统中安装了多个内核,删除旧内核。