Parallel Disk Usage (pdu)

Test Benchmark Clippy Code formatting Lint dependency graph Crates.io Version

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 a replacement of dust and dutree.

Both dust (v0.5.4) and dutree (v0.12.5) do not utilize the parallel computing capability of Rust to improve performance.

Benchmark

The benchmark was generated by a GitHub Workflow and uploaded to the release page.

Programs

benchmark results (lower is better)

(See more)

Demo

screenshot

asciicast of pdu command

asciicast of pdu command on /usr

Development

Prerequisites

Test

sh ./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

sh ./run pdu "${arguments[@]}"

Build

Debug build

sh cargo build --bin pdu

The resulting executable is located at target/debug/pdu.

Release build

sh cargo build --bin pdu --release

The resulting executable is located at target/release/pdu.

Update shell completion files

sh ./generate-completions.sh

Extending parallel-disk-usage

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.

From crates.io

Prerequisites: * cargo

sh cargo install parallel-disk-usage --bin pdu

Arch Linux

From the Arch User Repository

Prerequisites: * An AUR helper, such as paru

sh paru -S parallel-disk-usage-bin

sh paru -S parallel-disk-usage

From Khải's Pacman Repository

Follow the installation instruction then run the following command:

sh sudo pacman -S parallel-disk-usage

Distributions

Packaging Status

Similar programs

License

Apache 2.0 © Hoàng Văn Khải.