#目录 #磁盘 #驱动器 #摘要 #性能 # #工具

应用 dirscan

用于汇总大型目录或驱动器的性能工具

10个版本 (6个稳定版)

1.4.1 2022年9月6日
1.4.0 2021年3月29日
0.3.0 2020年4月12日
0.2.0 2020年4月6日
0.1.1 2020年4月4日

#603 in 文件系统

每月 43 次下载

MIT 协议

740KB
712

Dirscan Crates.io Actions Status

Dirscan是一款高性能工具,可以快速检查大型(可能是网络化)磁盘的内容。它提供了给定磁盘上每个目录的总结,包括文件数量、总大小以及文件最后一次创建、访问或修改的时间。

它专为太大而无法用传统工具检查的磁盘设计,并且

  • 比如dufindtree等工具快多个数量级
  • 可以使其提供的任何磁盘达到最大,前提是你有足够的CPU资源来跟上。
  • 生成简单的JSON或CSV输出,可以用内置查看器或其他工具进行分析
  • 支持可定制的线程数
  • 将结果流式传输到输出文件,以相对恒定的内存使用量处理任何大小的磁盘。

目录

安装 💿

Homebrew (MacOS + Linux)

brew tap orf/brew,然后 brew install dirscan

二进制文件 (Windows)

GitHub发布页面下载最新版本。解压并将其移动到您的PATH目录下。

Cargo

为了获得最佳性能,请运行cargo install dirscan

Docker

该项目作为Docker容器打包,名称为tomforbes/dirscan

运行 docker run --vYOUR_DIRECTORY:/dir tomforbes/dirscan scan /dir 将扫描 YOUR_DIRECTORY

使用 🎷

扫描目录

您可以通过执行以下命令开始扫描目录:

dirscan scan[PATH] --输出=[OUTPUT]

这将扫描 [PATH] 并以 JSON 格式输出所有结果到 [OUTPUT]。默认情况下,它将使用具有 2 * number_of_cores 线程的线程池,但您可以自定义此设置。根据您的磁盘速度,线程数可以显著提高性能

dirscan scan[PATH] --输出=[OUTPUT] --线程=20

您还可以以 CSV 格式输出结果

dirscan scan[PATH] --输出=[OUTPUT] --格式=csv

$ dirscan scan ~/ --output=output.json --threads=20
[00:00:15] Files/s: 17324/s | Total: 258734 | Size: 99.01GB | Components: 14291 | Errors: IO=0 Other=36

流结果

您可以通过执行以下命令将所有文件流到 stdout:

dirscan stream[PATH]

如果您想并行删除磁盘上的所有文件,可以创建如下管道:

dirscan stream/my-dir|xargs-d ‘\n’-L10 -P500

这将启动最多 500 个 rm 进程,每个进程删除 10 个文件。

检查结果

一旦扫描完成,您可以使用以下命令检查输出:

dirscan parse[OUTPUT]

例如

$ dirscan parse output.json --prefix=/System/
[00:00:02] Total: 580000 | Per sec: 220653/s
+----------------------+---------+----------+-------------+-------------+-------------+
| Prefix               | Files   | Size     | created     | accessed    | modified    |
+----------------------+---------+----------+-------------+-------------+-------------+
| /System/Applications | 57304   | 777.28MB | 2 weeks ago | 2 weeks ago | 2 weeks ago |
| /System/DriverKit    | 55      | 5.09MB   | 2 weeks ago | 2 weeks ago | 2 weeks ago |
| /System/Library      | 292190  | 13.56GB  | 7 hours ago | 1 hour ago  | 7 hours ago |
| /System/Volumes      | 1468296 | 197.93GB | 1 hour ago  | 1 hour ago  | 1 hour ago  |
| /System/iOSSupport   | 13856   | 600.20MB | 2 weeks ago | 2 weeks ago | 2 weeks ago |
+----------------------+---------+----------+-------------+-------------+-------------+

您可以使用 --depth 标志包含更多目录,或使用 --prefix 改变前缀搜索。

您还可以按 name(默认)、sizefiles 对结果进行排序

$ dirscan parse output.json --prefix=/System/ --sort=size
[00:00:02] Total: 580000 | Per sec: 220653/s
+----------------------+---------+----------+-------------+-------------+-------------+
| Prefix               | Files   | Size     | created     | accessed    | modified    |
+----------------------+---------+----------+-------------+-------------+-------------+
| /System/Volumes      | 1468296 | 197.93GB | 2 hours ago | 2 hours ago | 2 hours ago |
| /System/Library      | 292190  | 13.56GB  | 7 hours ago | 2 hours ago | 7 hours ago |
| /System/Applications | 57304   | 777.28MB | 2 weeks ago | 2 weeks ago | 2 weeks ago |
| /System/iOSSupport   | 13856   | 600.20MB | 2 weeks ago | 2 weeks ago | 2 weeks ago |
| /System/DriverKit    | 55      | 5.09MB   | 2 weeks ago | 2 weeks ago | 2 weeks ago |
+----------------------+---------+----------+-------------+-------------+-------------+

依赖项

~10–21MB
~271K SLoC