7 releases (breaking)
| 0.9.0 | Dec 6, 2025 |
|---|---|
| 0.8.0 | Dec 27, 2024 |
| 0.7.0 | Nov 14, 2021 |
| 0.6.0 | Sep 21, 2019 |
| 0.3.0 | Nov 2, 2018 |
#399 in Command line utilities
25,077 downloads per month
Used in uv
22KB
362 lines
diskus
A minimal, fast alternative to du -sh.
diskus is a very simple program that computes the total size of the current directory. It is a
parallelized version of du -sh. On my 8-core laptop, it is about ten times faster than du with
a cold disk cache and more than three times faster with a warm disk cache.
> diskus
9.59 GB (9,587,408,896 bytes)
Benchmark
The following benchmarks have been performed with hyperfine on a moderately large folder (15GB, 100k directories, 400k files). Smaller folders are not really of any interest since all programs would finish in a reasonable time that would not interrupt your workflow.
In addition to du and diskus, we also add tin-summer (sn) and
dust in our comparison. Both are also written in Rust and provide
much more features than diskus (check them out!). The optimal number of threads for sn (-j option) was
determined via hyperfine --parameter-scan.
Cold disk cache
sudo -v
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' \
'diskus' 'du -sh' 'sn p -d0 -j8' 'dust -d0'
(the sudo/sync/drop_caches commands are a way to
clear the filesystem caches between benchmarking runs)
| Command | Mean [s] | Min [s] | Max [s] | Relative |
|---|---|---|---|---|
diskus |
1.746 ± 0.017 | 1.728 | 1.770 | 1.00 |
du -sh |
17.776 ± 0.549 | 17.139 | 18.413 | 10.18 |
sn p -d0 -j8 |
18.094 ± 0.566 | 17.482 | 18.579 | 10.36 |
dust -d0 |
21.357 ± 0.328 | 20.974 | 21.759 | 12.23 |
Warm disk cache
On a warm disk cache, the differences are smaller:
hyperfine --warmup 5 'diskus' 'du -sh' 'sn p -d0 -j8' 'dust -d0'
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
diskus |
500.3 ± 17.3 | 472.9 | 530.6 | 1.00 |
du -sh |
1098.3 ± 10.0 | 1087.8 | 1122.4 | 2.20 |
sn p -d0 -j8 |
1122.2 ± 18.2 | 1107.3 | 1170.1 | 2.24 |
dust -d0 |
3532.1 ± 26.4 | 3490.0 | 3563.1 | 7.06 |
Installation
On Debian-based systems
You can download the latest Debian package from the
release page and install it via dpkg:
wget "https://github.com/sharkdp/diskus/releases/download/v0.9.0/diskus_0.9.0_amd64.deb"
sudo dpkg -i diskus_0.9.0_amd64.deb
On Arch-based systems
pacman -S diskus
Or download diskus-bin from the AUR.
On Void-based systems
xbps-install diskus
On macOS
You can install diskus with Homebrew:
brew install diskus
Or with MacPorts:
sudo port install diskus
On Haiku
pkgman install diskus
On NixOS
nix-env -iA nixos.diskus
Or add it to environment.systemPackages in your configuration.nix.
On other systems
Check out the release page for binary builds.
Via cargo
If you have Rust 1.76 or higher, you can install diskus from source via cargo:
cargo install diskus
Directory counting
diskus matches the behavior of du regarding directory entries:
- Disk usage mode (default): Directories are included in the total size, matching
du -s. - Apparent size mode (
-b): Only files are counted, matchingdu -sb.
You can override this with --directories=included or --directories=excluded.
Windows caveats
Windows-internal tools such as Powershell, Explorer or dir are not respecting hardlinks or
junction points when determining the size of a directory. diskus does the same and counts
such entries multiple times (on Unix systems, multiple hardlinks to a single file are counted
just once).
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~1–14MB
~146K SLoC