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 次下载
740KB
712 行
Dirscan
Dirscan是一款高性能工具,可以快速检查大型(可能是网络化)磁盘的内容。它提供了给定磁盘上每个目录的总结,包括文件数量、总大小以及文件最后一次创建、访问或修改的时间。
它专为太大而无法用传统工具检查的磁盘设计,并且
- 比如
du
、find
或tree
等工具快多个数量级 - 可以使其提供的任何磁盘达到最大,前提是你有足够的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
(默认)、size
或 files
对结果进行排序
$ 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