137137137/OpenDisk
GitHub: 137137137/OpenDisk
OpenDisk 是一款免费开源的 macOS 磁盘空间分析工具,通过交互式旭日图在数秒内完成全盘扫描并直观展示文件占用情况。
Stars: 11 | Forks: 0
OpenDisk
一款专为 macOS 打造的快速、免费且**开源**的磁盘空间分析工具 —— DaisyDisk 的开源替代方案。它将您的驱动器映射为交互式旭日图,能在几秒钟内完成全盘扫描,并在运行时实时流式传输结果。
[](https://github.com/137137137/OpenDisk/releases/latest)
[](LICENSE)
[](https://www.apple.com/macos/)
**[⬇ 下载 macOS 版本](https://opendisk.app)** · [GitHub releases](https://github.com/137137137/OpenDisk/releases/latest)
解压并启动 —— OpenDisk 会提示您将其移动到“应用程序”文件夹中,并保持自动更新。
## 功能
- 交互式旭日图,其中每一个圆环代表目录树中更深的一层。
- 将鼠标悬停在任何扇区上即可查看其确切大小,点击可放大进入该文件夹。
- 图表旁附带可排序的、Finder 风格的文件夹列表,并带有面包屑导航。
- 扫描期间会实时流式传输结果,因此图表和列表会在扫描过程中同步填充。
- 增量重新扫描会复用上一次的扫描结果并重放文件系统事件,因此重复扫描比冷扫描快 20–28 倍。
- 深入理解 APFS 卷组、 firmlinks 、可清除空间和系统卷,因此统计的总数与 Mac 报告的已用空间一致。
- 跨整个扫描目录树的即时搜索 —— 即使在包含数百万文件的驱动器上,结果也会在您输入时瞬间显现。
- 收集器:您可以从应用程序的任何位置将文件和文件夹拖入其中,查看预计可回收的容量总数,并一键将它们删除。
- “可清除空间”明细展示了缓存和其他可回收的存储空间。
- 连接外置驱动器时会自动显示。
- 保持自动更新(通过 Sparkle )。
## 为什么选择 OpenDisk?
您所熟悉的 DaisyDisk 风格旭日图 —— 但它是**免费**、**开源**且**更快**的。
| | OpenDisk | DaisyDisk |
| :-- | :-: | :-: |
| 价格 | **免费** | 付费 |
| 许可证 | **开源 (MIT)** | 专有 |
| 交互式旭日图 | ✓ | ✓ |
| 1 TB 冷扫描 | **17 秒** | 37 秒 |
## 基准测试
针对 1 TB Apple Silicon 卷的完整扫描,冷缓存。
| 工具 | 1 TB 扫描 | 相对速度 |
| OpenDisk | 17 秒 | 1x |
| DaisyDisk | 37 秒 | 慢 2.2 倍 |
| Baobab | 2 分 15 秒 | 慢约 8 倍 |
## 系统要求
- macOS 26 (Tahoe) 或更高版本,基于 Apple Silicon 或 Intel 芯片。
- 需要完全磁盘访问权限,否则 macOS 会隐藏部分文件系统,导致统计总数偏小。请在**系统设置 → 隐私与安全性 → 完全磁盘访问权限**中授予权限。应用程序会在首次启动时提示您开启。
## 构建说明
在 Xcode 中打开 `OpenDisk.xcodeproj` 并运行,或者通过命令行构建:
```
xcodebuild -project "OpenDisk.xcodeproj" -scheme "OpenDisk" build
```
## 使用说明
1. 启动 OpenDisk ,并在出现提示时授予**完全磁盘访问权限**,以确保扫描没有任何隐藏内容。
2. 选择一个驱动器,或选择**扫描文件夹…**来分析任意目录。
3. 探索旭日图 —— 将鼠标悬停在扇区上查看确切大小,点击以放大进入,并使用面包屑导航或文件夹列表逐步返回上层。
4. 打开**可清除空间**,查看缓存及其他可回收存储空间的细分情况。
## 工作原理
- 使用 `getattrlistbulk(2)` 和 `searchfs(2)` 批量读取目录元数据,而不是对每个文件单独执行一次 `stat`。
- 使用少量并发读取器(子目录树为 4–5 个,整个卷约为 8 个),因为 APFS 会对目录读取进行串行化处理,超过此并发数后吞吐量会下降。
- 在固定的专用工作线程池上运行阻塞式读取,这些线程从共享的工作栈中提取任务。
- 使用逐个子项的挂载标志在挂载点和快照卷处停止扫描,因此扫描 `/` 时不会重复计算磁盘空间。
## 项目结构
```
OpenDisk/
├── App/ App entry point
├── Models/ Folder items, chart data, scan progress
├── Services/
│ ├── DiskAnalyzer.swift Top-level scan orchestration
│ └── Scanning/ Scanner core
│ ├── ScanEngine.swift Strategy selection and streaming snapshots
│ ├── TraversalScanner.swift getattrlistbulk worker pool
│ ├── CatalogScanner.swift searchfs catalog scans
│ ├── ScanCache.swift Incremental rescan cache
│ └── SystemInterop/ Wrappers over the kernel APIs
├── Views/
│ ├── Charts/ Sunburst rings chart
│ ├── Analysis/ Results screen
│ └── Components/ Rows, breadcrumbs, status bar
└── Resources/ Assets and icons
```
## 许可证
基于 [MIT 许可证](LICENSE) 发布。
标签:GUI, Mutation, 可视化, 文件管理, 磁盘空间分析, 系统工具