引言

在 Linux 和类 Unix 系统中,df (disk free) 命令是查看文件系统磁盘空间使用情况的标准工具。然而,其默认输出格式对于许多用户来说不够直观,信息密度低,可读性较差。为了解决这些痛点,开源社区涌现出许多替代方案,Duf (Disk Usage/Free) 就是其中一款备受好评的现代化命令行工具。它旨在提供一个更美观、更易于理解的磁盘使用情况概览。

Duf 由 muesli 开发,使用 Go 语言编写,这意味着它通常作为一个独立的二进制文件分发,没有复杂的运行时依赖,并且具有良好的跨平台特性。

主要特性

Duf 的核心优势在于其用户友好的设计和丰富的功能:

  1. 清晰易读的输出: 这是 Duf 最显著的特点。它以彩色表格的形式展示磁盘信息,自动使用合适的单位 (KiB, MiB, GiB),并能显示使用率条,使得磁盘空间状况一目了然。相比 df 密集的文本输出,Duf 的界面更加现代和直观。
  2. 跨平台支持: Duf 可在 Linux、macOS、Windows、BSD 等多种操作系统上运行,为不同平台的用户提供了一致的体验。
  3. 灵活的过滤与排序:
    • 过滤: 可以轻松地只显示特定类型的文件系统(如本地、网络、特殊文件系统),或根据设备名称、挂载点、文件系统类型进行过滤 (--only-local, --only-fs ext4,xfs 等)。
    • 排序: 支持按大小、使用率、挂载点、inode 使用情况等多个字段对输出结果进行排序 (--sort size),方便快速定位关键分区。
  4. JSON 输出: Duf 支持将结果输出为 JSON 格式 (--json),这对于脚本自动化处理和与其他工具(如 jq)集成非常有用。
  5. 高度可定制:
    • 输出字段: 用户可以通过 --output 参数或 DUF_OUTPUT 环境变量精确控制需要显示的列(如 mountpoint,size,used,avail,usage,inodes,inodes_usage,type,filesystem)。
    • 颜色主题: 支持浅色和深色主题,并允许通过配置文件自定义颜色方案。
    • 配置文件: 可以通过 $HOME/.config/duf/dufrc (或 $XDG_CONFIG_HOME/duf/dufrc) 设置默认参数、别名和颜色主题。

安装与快速入门

Duf 的安装通常非常简单。

  • 通过包管理器 (推荐):
    • Debian/Ubuntu: sudo apt install duf
    • Fedora: sudo dnf install duf
    • Arch Linux: sudo pacman -S duf
    • macOS (Homebrew): brew install duf
    • Windows (Scoop/Chocolatey): scoop install dufchoco install duf
  • 从 Releases 下载: 访问 GitHub Releases 页面 下载预编译的二进制文件。
  • 从源码编译: 如果你安装了 Go 环境,可以使用 go install github.com/muesli/duf@latest

安装完成后,只需在终端中运行 duf 即可看到效果:

duf

你会看到一个比 df 清晰得多的磁盘使用情况列表。

进阶使用与技巧

除了基本用法,Duf 还提供了一些高级功能:

  • 仅显示特定文件系统:
    bash
    # 只显示本地 ext4 和 xfs 文件系统
    duf --only-local --only-fs ext4,xfs
  • 按可用空间排序:
    bash
    # 按可用空间从小到大排序
    duf --sort avail
  • 自定义输出列:
    bash
    # 只显示挂载点、大小和使用率
    duf --output mountpoint,size,usage
  • 结合 jq 处理 JSON 输出:
    bash
    # 获取根目录的使用率
    duf --json | jq '.[] | select(.mount_point == "/") | .usage'
  • 查看 Inode 使用情况:
    bash
    # 显示 inode 相关信息并按 inode 使用率排序
    duf --output mountpoint,inodes,inodes_used,inodes_avail,inodes_usage --sort inodes_usage
  • 使用配置文件: 创建 ~/.config/duf/dufrc 文件,例如设置默认只显示本地设备并按大小排序:
    only-local = true
    sort = size

使用场景与案例

Duf 适用于多种场景:

  • 日常系统监控: 替代 df 进行快速、直观的磁盘空间检查。
  • 自动化脚本: 利用其清晰的输出或 JSON 格式,编写脚本来监控磁盘使用率。例如,结合 cronduf --json,当某个分区的空间低于阈值时发送警报。
  • 服务器管理: 快速了解服务器上所有挂载点(包括 NFS、SMB 等网络挂载)的空间状况。
  • 容器环境: 在容器内运行 duf,方便地查看容器的文件系统使用情况。
  • 资源受限设备: 用户反馈表明 Duf 在 Raspberry Pi 等设备上资源占用较低,适合这些环境。

用户评价与性能考量

社区普遍对 Duf 的易用性和视觉效果给予积极评价,认为它显著改善了查看磁盘信息的体验。颜色编码和清晰的表格是其广受欢迎的主要原因。

然而,也有用户反馈在处理大量挂载点(尤其是网络文件系统如 NFS)时,Duf 的启动速度可能会比原生 df 慢。此外,在某些特定文件系统上,有报告称其 CPU 占用可能较高。需要注意的是,Duf 的主要设计目标是提供更好的用户体验而非极致性能。对于大多数日常使用场景,其性能是完全可以接受的。官方目前缺乏详细的基准测试数据,用户可以在自己的环境中进行评估。

与类似工具对比

市面上有多种磁盘空间查看工具,各有侧重:

  • df (原生):
    • 优点: 系统自带,无需安装,轻量。
    • 缺点: 输出不直观,可读性差,功能相对基础。
  • pydf:
    • 优点: 类似 Duf,提供彩色易读输出。
    • 缺点: 基于 Python,需要 Python 环境。
  • ncdu (NCurses Disk Usage):
    • 优点: 交互式界面,可以深入浏览目录结构,按大小排序文件/目录,快速定位大文件/目录。
    • 缺点: 主要用于分析目录内容占用,而非文件系统概览。
  • dust:
    • 优点: 类似 ncdu 的交互式目录分析工具,通常更快(Rust 编写,并行处理),界面更现代。
    • 缺点:ncdu,侧重目录分析。
  • Duf:
    • 优点: df 的现代化替代品,输出清晰易读,跨平台,JSON 支持,可定制性好,无运行时依赖 (Go)。
    • 缺点: 主要用于文件系统概览,非交互式目录分析;处理大量挂载时可能比 df 稍慢。

选择建议:

  • 如果只需要快速、直观地查看文件系统整体使用情况Dufdf 的优秀替代品。
  • 如果需要深入分析哪个目录或文件占用空间最多,应选择 ncdudust

总结

Duf 成功地解决了传统 df 命令可读性差的问题,通过现代化的界面、丰富的功能和良好的跨平台支持,为用户提供了一种更愉悦、更高效的方式来查看磁盘使用情况。虽然在某些极端情况下的性能可能不是最优,但其易用性和清晰度使其成为系统管理员、开发者和普通用户的有力工具。

如果你厌倦了 df 的原始输出,不妨尝试一下 Duf,体验更直观的磁盘空间管理。

项目地址: https://github.com/muesli/duf

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。