温馨提示×

清理Debian系统以释放磁盘空间的方法

小樊
39
2025-12-20 05:44:06
栏目: 云计算

Debian 系统清理磁盘空间的实用步骤

一 快速定位占用

  • 查看整体磁盘使用:使用命令:df -h,快速判断哪个分区已满(如 //var)。
  • 分析目录占用:使用命令:sudo ncdu /(需安装:sudo apt-get install ncdu),交互式查看大目录与文件,便于精准清理。
  • 查找超大文件:使用命令:sudo find / -type f -size +1G 2>/dev/null,定位大于 1GB 的文件,排查异常或过期数据。

二 APT 与软件包清理

  • 清理下载的包缓存:
    • 删除所有已下载的 .deb 包:sudo apt-get clean(目录:/var/cache/apt/archives/)。
    • 仅删除过期不可再下载的包:sudo apt-get autoclean
  • 移除无用依赖与旧配置:
    • 删除不再需要的依赖:sudo apt-get autoremove --purge
    • 清理残留配置(状态为 rc 的包):先查 dpkg --list | grep “^rc”,再执行 sudo dpkg --purge <包名>
  • 删除孤儿包与过时包:
    • 查找并删除孤儿包:sudo apt-get install deborphan,然后 deborphan | xargs sudo apt-get purge -y
    • 查找过时包:sudo aptitude search ‘?obsolete’,确认后按需 purge

三 日志、临时文件与内存缓存

  • 清理 systemd 日志(journald):
    • 按时间保留:sudo journalctl --vacuum-time=7d
    • 按大小保留:sudo journalctl --vacuum-size=100M
    • 执行日志轮转后再清理更稳妥:sudo journalctl --rotate
  • 清理临时文件:
    • 系统临时目录:sudo rm -rf /tmp/;sudo rm -rf /var/tmp/(谨慎操作,确保无程序正在使用)。
    • 使用 systemd-tmpfiles 按策略清理:sudo systemd-tmpfiles --clean(遵循 /usr/lib/tmpfiles.d/ 与 /etc/tmpfiles.d/ 中的配置)。
  • 谨慎清理内存缓存(仅测试或特殊场景):
    • 查看内存:free -h;同步后清理:sudo sync && sudo sh -c “echo 3 > /proc/sys/vm/drop_caches”(会释放 pagecache、dentries、inodes)。

四 旧内核与容器清理

  • 删除旧 Linux 内核(务必保留当前运行内核):
    • 查看当前内核:uname -r
    • 列出已安装内核镜像:dpkg --list | grep “linux-image”
    • 安全删除旧内核(示例):sudo apt-get purge linux-image-<版本号>-generic linux-headers-<版本号>-generic;删除后执行 sudo update-grub 更新引导。
  • 如果使用 Docker:
    • 全面清理(慎用,会删除所有未使用资源):docker system prune -a --volumes -f
    • 按类型分别清理:docker image prune -a -f;docker container prune -f;docker volume prune -f;docker network prune -f

五 自动化与长期优化

  • 设置日志保留策略:编辑 /etc/systemd/journald.conf,设置 SystemMaxUse=100MMaxRetentionSec=7day,然后 sudo systemctl restart systemd-journald
  • 定期清理临时文件:启用或调整 systemd-tmpfiles 的定时清理(默认会按配置自动清理 /tmp/var/tmp 中过期文件)。
  • 定期维护命令(可放入脚本或定时任务):
    • sudo apt-get update && sudo apt-get full-upgrade -y
    • sudo apt-get autoremove --purge -y && sudo apt-get autoclean -y
    • sudo journalctl --rotate && sudo journalctl --vacuum-time=7d
  • 风险提示:删除 /boot 中的内核、修改 /var/tmp 下正在使用的文件可能导致系统异常;操作前请确认并备份重要数据。

0