Parallel Disk Usage (pdu)
Highly parallelized, blazing fast directory tree analyzer.
Description
pdu
is a CLI program that renders a graphical chart for disk usages of files and directories, it is an alternative to dust
and dutree
.
Benchmark
The benchmark was generated by a GitHub Workflow and uploaded to the release page.
benchmark results (lower is better)Demo
Features
- Fast.
- Relative comparison of separate files.
- Extensible via the library crate or JSON interface.
- Optional progress report.
- Customize tree depth.
- Customize chart size.
Limitations
- Ignorant of hard links: All hard links are counted as real files.
- Do not follow symbolic links.
- Do not differentiate filesystem: Mounted folders are counted as normal folders.
- The runtime is optimized at the expense of binary size.
Development
Prerequisites
Test
./test.sh && ./test.sh --release
Environment Variables
name | type | default value | description |
---|---|---|---|
FMT |
true or false |
true |
Whether to run cargo fmt |
LINT |
true or false |
true |
Whether to run cargo clippy |
DOC |
true or false |
false |
Whether to run cargo doc |
BUILD |
true or false |
true |
Whether to run cargo build |
TEST |
true or false |
true |
Whether to run cargo test |
BUILD_FLAGS |
string | (empty) | Space-separated list of flags for cargo build |
TEST_FLAGS |
string | (empty) | Space-separated list of flags for cargo test |
Run
./run pdu "${arguments[@]}"
"${arguments[@]}"
: List of arguments to pass topdu
.
Build
Debug build
cargo build --bin pdu
The resulting executable is located at target/debug/pdu
.
Release build
cargo build --bin pdu --release
The resulting executable is located at target/release/pdu
.
Update shell completion files
./generate-completions.sh
parallel-disk-usage
Extending The parallel-disk-usage crate is both a binary crate and a library crate. If you desire features that pdu
itself lacks (that is, after you have asked the maintainer(s) of pdu
for the features but they refused), you may use the library crate to build a tool of your own. The documentation for the library crate can be found in docs.rs.
Alternatively, the pdu
command provides --json-input
flag and --json-output
flag. The --json-output
flag converts disk usage data into JSON and the --json-input
flag turns said JSON into visualization. These 2 flags allow integration with other CLI tools (via pipe, as per the UNIX philosophy).
Beware that the structure of the JSON tree differs depends on the number of file/directory names that were provided (as CLI arguments):
- If there are only 0 or 1 file/directory names, the name of the tree root would be a real path (either
.
or the provided name). - If there are 2 or more file/directory names, the name of the tree root would be
(total)
(which is not a real path), and the provided names would correspond to the children of the tree root.
Installation
Any Desktop OS
From GitHub
Go to the GitHub Release Page and download a binary.
crates.io
FromPrerequisites:
cargo install parallel-disk-usage --bin pdu
Arch Linux
Arch User Repository
From thePrerequisites:
- An AUR helper, such as
paru
paru -S parallel-disk-usage-bin
paru -S parallel-disk-usage
Khải's Pacman Repository
FromFollow the installation instruction then run the following command:
sudo pacman -S parallel-disk-usage
Distributions
Similar programs
- CLI:
- TUI:
- GUI: