macOS 是谁占用了空间(NCDU)

从 Macbook Pro 2015 换到 Macbook Pro 2019,再到如今的 Macbook M1 Pro,磁盘空间占用越来越大,虽然可以用 du -sh ~/.* ~/* | sort -hr 命令,在一些关键目录排查个大概,无奈目录层级太多,分析时间成本有点高,就找到了这个神器: NCDU(NCurses Disk Usage)

首先,我们来看看如何使用 du

  1. 打开 Terminal(终端)。
  2. 输入以下命令来查找当前用户主目录下的所有文件和目录的大小,并按大小排序:
1
du -sh ~/.* ~/* | sort -hr

这里, du -sh 会显示目录和文件的大小, sort -hr 会按照人类可读的大小进行排序。

如果你想检查整个系统的空间占用情况,请使用以下命令(需要管理员权限):

1
sudo du -sh /* | sort -hr

接下来,我们来看看如何使用 ncdu

  1. 如果你还没有安装 Homebrew,请先安装它。在 Terminal 中输入以下命令:
1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 使用 Homebrew 安装 ncdu
1
brew install ncdu
  1. 运行 ncdu 来分析当前用户主目录的磁盘空间占用情况:
1
ncdu ~

如果你想检查整个系统的空间占用情况,请使用以下命令(需要管理员权限):

1
sudo ncdu /

ncdu 会以交互式的方式显示目录和文件的大小,可以使用上下箭头键来浏览,并按 Enter 键深入查看目录。要返回上一级目录,请按 Left 键。这样你就可以找到占用空间较大的目录和文件了。

ncdu 本身没有内置缓存功能,每次运行时都会重新扫描目录。但是,你可以将 ncdu 的输出导出到一个文件,然后稍后再查看这个文件,以避免重新扫描。这样做可以在一定程度上加快重复查看磁盘使用情况的速度。请注意,这种方法不能实时反映磁盘使用情况的变化。

以下是将 ncdu 的输出导出到文件以及从文件中读取输出的方法:

  1. ncdu 的输出导出到一个名为 ncdu_output 的文件:
1
ncdu -o ncdu_output ~

这将扫描你的用户主目录并将结果保存到名为 ncdu_output 的文件中。你可以将 ~ 替换为任何你想扫描的目录。

  1. 从导出的文件中读取 ncdu 的输出:
1
ncdu -f ncdu_output

这将从 ncdu_output 文件中读取磁盘使用情况数据,并显示在交互式界面中。请注意,这些数据是在导出时生成的,可能不是最新的。

通过这种方式,你可以避免每次都重新扫描目录,从而加快重复查看磁盘使用情况的速度。但是,如果你需要查看实时的磁盘使用情况,你仍然需要重新运行 ncdu 进行扫描。

PS: NCDU 并不只是在 macOS 系统,Linux 系统同样可用.