bootandy / dust Goto Github PK
View Code? Open in Web Editor NEWA more intuitive version of du in rust
License: Apache License 2.0
A more intuitive version of du in rust
License: Apache License 2.0
cargo bails out whilst compiling:
error[E0432]: unresolved import
self::std::hint--> .cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/inline_lazy.rs:13:16 | 13 | use self::std::hint::unreachable_unchecked; | ^^^^ Could not find
hintin
std`
error: aborting due to previous error
error: Could not compile lazy_static
.
warning: build failed, waiting for other jobs to finish...
error: failed to compile du-dust v0.4.0
, intermediate artifacts can be found at /tmp/cargo-install.9fTx6Q9xf9f3
Caused by:
build failed
`
any help appreciated,
Phil.
The results of dust -s -d=1
in a folder containing many files will be displayed and having to scroll back to the top is, meh.
Add a --reverse
flag so the important information is displayed right at the end of the command execution.
Great work on this friend! π
Benchmark
hyperfine 'dutree app/'
Benchmark #1: dutree app/
Time (mean Β± Ο): 57.4 ms Β± 1.0 ms [User: 19.2 ms, System: 37.8 ms]
Range (min β¦ max): 55.9 ms β¦ 61.9 ms 51 runs
hyperfine 'dust app/'
Benchmark #1: dust app/
Time (mean Β± Ο): 20.6 ms Β± 2.8 ms [User: 29.0 ms, System: 15.6 ms]
Range (min β¦ max): 17.2 ms β¦ 27.0 ms 108 runs
hyperfine 'du app/'
Benchmark #1: du app/
Time (mean Β± Ο): 6.3 ms Β± 0.2 ms [User: 2.6 ms, System: 3.6 ms]
Range (min β¦ max): 5.9 ms β¦ 7.7 ms 401 runs
dust
is ~3x slower than du
but ~2.5x faster than duetree
Improvement suggestions from nachoparker/dutree#18 may apply
Dust is currently about 4 times slower than du.
It would be nice to know why and how it's slower. Did you add benchmarks of some sorts?
In a second phase, it's probably easy to optimize it?
When can we expect du_dust 2.0.0?
There doesn't seem to be a man page.
I've installed on macos via Hombrew:
$ brew info dust
dust: stable 0.5.2 (bottled), HEAD
Hello,
First, thx for this amazing tools.
Thanks to it I was able to clean my computer from a lot of bull***
I open this issue on a subject i don't rely understand by I hope it can help.
Thx to bsd/apple clone things, i am able to clone dir/ file with cp -c .
Clone are, as understand it, a kind of weird hard link but when you write over it, it save the diff.
In my example, you can see that I clone the dankest movie of my library few time and df -h
doesn't report a disk usage difference.
dust repeat the clones as there take more space on disk.
[Movies] df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 466Gi 10Gi 90Gi 11% 484283 4881968597 0% /
devfs 403Ki 403Ki 0Bi 100% 1404 0 100% /dev
/dev/disk1s2 466Gi 352Gi 90Gi 80% 3172969 4879279911 0% /System/Volumes/Data
/dev/disk1s5 466Gi 12Gi 90Gi 12% 12 4882452868 0% /private/var/vm
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /System/Volumes/Data/home
/dev/disk2s2 105Mi 105Mi 0Bi 100% 3 4294967276 0% /Volumes/Install Google Drive File Stream
drivefs 30Gi 7.0Gi 23Gi 24% 18446744069414596880 4294967295 146880675765702656% /Volumes/GoogleDrive
drivefs 30Gi 7.0Gi 23Gi 24% 18446744069414740697 4294967295 11796403584574832% /Volumes/GoogleDrive
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone1
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone2
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone3
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone4
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone5
[Movies] cp -cR Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT clone6
[Movies] df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 466Gi 10Gi 90Gi 11% 484283 4881968597 0% /
devfs 403Ki 403Ki 0Bi 100% 1404 0 100% /dev
/dev/disk1s2 466Gi 352Gi 90Gi 80% 3172987 4879279893 0% /System/Volumes/Data
/dev/disk1s5 466Gi 12Gi 90Gi 12% 12 4882452868 0% /private/var/vm
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /System/Volumes/Data/home
/dev/disk2s2 105Mi 105Mi 0Bi 100% 3 4294967276 0% /Volumes/Install Google Drive File Stream
drivefs 30Gi 7.0Gi 23Gi 24% 18446744069414596880 4294967295 146880675765702656% /Volumes/GoogleDrive
drivefs 30Gi 7.0Gi 23Gi 24% 18446744069414740697 4294967295 11796403584574832% /Volumes/GoogleDrive
[Movies] dust
46G ββ¬ .
24G βββ¬ Star.Wars.The.Clone.Wars.S01.1080p.BluRay.x264-FLHD[rartv]
1.1G β βββ Star.Wars.The.Clone.Wars.S01E22.1080p.BluRay.x264-FLHD.mkv
1.1G β βββ Star.Wars.The.Clone.Wars.S01E20.1080p.BluRay.x264-FLHD.mkv
1.1G β βββ Star.Wars.The.Clone.Wars.S01E16.1080p.BluRay.x264-FLHD.mkv
2.9G βββ¬ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone1
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone2
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone3
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone4
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone5
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
2.9G βββ¬ clone6
2.9G β βββ Sonic.the.Hedgehog.2020.720p.HDRip.XviD.MP3-STUTTERSHIT.avi
1.4G βββ¬ Zero.Dark.Thirty.2012.1080p.BluRay.x265.10bit-z97
1.4G βββ Zero.Dark.Thirty.2012.1080p.BluRay.x265.10bit-z97.mkv
I never ever developed in rust except 10 minute ago while try to see if metadata and filetype structure could help us here. seems not.
Actually, I have no clue to know if a file is a clone or not : (https://stackoverflow.com/questions/46417747/apple-file-system-apfs-check-if-file-is-a-clone-on-terminal-shell)
Would be glad to help you if you don't have any OSx to try thing out, but I don't think I would be able to PR anything.
Best Regards,
I had dust fail when it ran out of memory:
memory allocation of 26214400 bytes failedAbandon
GNU sort uses temporary files so that it offloads big allocations to disk. Could this be considered ?
Hi,
This looks great. I wanted to install this on our CentOS7 cluster, but it runs into an error, for which I believe the key part is:
= note: /usr/bin/ld: cannot find Scrt1.o: No such file or directory
collect2: error: ld returned 1 exit status
Full error below:
$ cargo install du-dust
Updating crates.io index
Installing du-dust v0.4.4
Compiling autocfg v0.1.7
Compiling semver-parser v0.7.0
Compiling cfg-if v0.1.10
Compiling lazy_static v1.4.0
Compiling libc v0.2.66
Compiling scopeguard v1.0.0
Compiling rayon-core v1.7.0
Compiling bitflags v1.2.1
Compiling either v1.5.3
Compiling unicode-width v0.1.7
Compiling ansi_term v0.11.0
Compiling strsim v0.8.0
Compiling vec_map v0.8.1
Compiling ansi_term v0.12.1
Compiling textwrap v0.11.0
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/cargo-install7sSh8x/release/build/rayon-core-f7f2f1f46b6e30ee/build_script_build-f7f2f1f46b6e30ee.build_script_build.211rs0xc-cgu.0.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/rayon-core-f7f2f1f46b6e30ee/build_script_build-f7f2f1f46b6e30ee.build_script_build.211rs0xc-cgu.1.rcgu.o" "-o" "/tmp/cargo-install7sSh8x/release/build/rayon-core-f7f2f1f46b6e30ee/build_script_build-f7f2f1f46b6e30ee" "/tmp/cargo-install7sSh8x/release/build/rayon-core-f7f2f1f46b6e30ee/build_script_build-f7f2f1f46b6e30ee.3g6uguohz55x28e8.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/tmp/cargo-install7sSh8x/release/deps" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-74488c47a41eb313.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-efbc2c947951b8cc.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-b177382d9a04ffbe.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-ba7d2244d33447d5.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-39569dc87e4ea301.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-cd9e255bd82ddb5c.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-f83165e777dccb8d.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-10b085de263b1750.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-9a4a22edf44da957.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-68fabc677efa98de.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-026dc0061b48e8b6.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-7bf75bb619341145.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-ef54709e300503ed.rlib" "-Wl,--end-group" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-4ed27d8420cb4abc.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
= note: /usr/bin/ld: cannot find Scrt1.o: No such file or directory
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `rayon-core`.
warning: build failed, waiting for other jobs to finish...
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.0.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.1.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.10.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.11.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.12.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.2.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.3.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.4.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.5.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.6.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.7.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.8.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.build_script_build.681e3too-cgu.9.rcgu.o" "-o" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf" "/tmp/cargo-install7sSh8x/release/build/bitflags-3969f63208505ddf/build_script_build-3969f63208505ddf.2tulew8g0xjtlar5.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/tmp/cargo-install7sSh8x/release/deps" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-74488c47a41eb313.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-efbc2c947951b8cc.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-b177382d9a04ffbe.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-ba7d2244d33447d5.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-39569dc87e4ea301.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-cd9e255bd82ddb5c.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-f83165e777dccb8d.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-10b085de263b1750.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-9a4a22edf44da957.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-68fabc677efa98de.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-026dc0061b48e8b6.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-7bf75bb619341145.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-ef54709e300503ed.rlib" "-Wl,--end-group" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-4ed27d8420cb4abc.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
= note: /usr/bin/ld: cannot find Scrt1.o: No such file or directory
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `bitflags`.
warning: build failed, waiting for other jobs to finish...
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.0.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.1.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.10.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.11.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.12.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.13.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.14.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.15.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.2.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.3.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.4.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.5.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.6.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.7.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.8.rcgu.o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.build_script_build.8innslw3-cgu.9.rcgu.o" "-o" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728" "/tmp/cargo-install7sSh8x/release/build/libc-024ef14981899728/build_script_build-024ef14981899728.3q2jtolj7xqfp7y.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/tmp/cargo-install7sSh8x/release/deps" "-L" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-74488c47a41eb313.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-efbc2c947951b8cc.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-b177382d9a04ffbe.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-ba7d2244d33447d5.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-39569dc87e4ea301.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-cd9e255bd82ddb5c.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-f83165e777dccb8d.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-10b085de263b1750.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-9a4a22edf44da957.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-68fabc677efa98de.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-026dc0061b48e8b6.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-7bf75bb619341145.rlib" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-ef54709e300503ed.rlib" "-Wl,--end-group" "/home/wdecoster/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-4ed27d8420cb4abc.rlib" "-Wl,-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
= note: /usr/bin/ld: cannot find Scrt1.o: No such file or directory
collect2: error: ld returned 1 exit status
error: aborting due to previous error
error: could not compile `libc`.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `du-dust v0.4.4`, intermediate artifacts can be found at `/tmp/cargo-install7sSh8x`
Caused by:
build failed
dust
0.5.3 from https://github.com/bootandy/dust/releases/download/v0.5.3/dust-v0.5.3-x86_64-unknown-linux-musl.tar.gzdust -V
from the downloaded packageSometimes the output can look like this:
4.0K ββ¬
8.0K ββ¬ .
8.0K βββ¬ many
4.0K βββ hello_file
0B βββ a_file
Instead of:
8.0K ββ¬ .
8.0K βββ¬ many
4.0K βββ hello_file
0B βββ a_file
This seems to be down to a call to: e.path().ancestors() in utils/mod.rs which can return '/' as an ancestor.
Investigating.
When running cargo test
while putting together #59, it came to my attention that tests on Linux are filesystem-dependent. test_dir2
is 12K on my XFS home filesystem or my tmpfs /tmp, whereas the tests expect 24K (perhaps from ext4?).
This should at minimum be documented, but I'd recommend copying the test files to /tmp
and running them there, as the vast majority of Linux systems default to /tmp
being a tmpfs.
Hey there! Love dust and find it very useful. I would like to have an option to exclude directories from the search/listing though. Is there a way to do this (I don't see it in the help menu)? If not, I think adding a -X
/ --exclude
option would be useful. I can do the work if you think it is technically feasible. Any thoughts?
When displaying files with special character like '\n', '\t', '\r', and so on, it might cause the bar to be placed wrong.
I think it is great to encode filenames like what ls
do before printing it out.
I'm mostly writing this so I get the close notification when this happens, but it would be neat if there were rpm/deb packages for dust.
I have a directory which in total consumes over 1TB, but the subdirectories don't really go above 60GB a piece. The total bar consumes and crushes the rest of the values and makes it not very useful. The option to not show the total row would be great.
(Also thank you for the neat tool! I've been using it nearly daily since I've found it.)
I want to show dust
output inside some environments where it is not possible to read the terminal width. The simplest example is if piping the output into a pager like less
:
These environments normally have variables available that can be passed into the command, so being able to specify something like --width=$COLUMNS
would be useful.
Hi. I managed to put together scoop manifest for dust. It is available here in my personal scoop. I would like to promote it to extras bucket after some evaluation period depending on the feedback. Let me know what you think.
It'd be great if there was an option to not color the output, or if automatically detected that the output was not a TTY and skipped coloring automatically. This would help when using dust | less
or with things like watch
.
When i execute dust -V only the program name is printed, nor the version.
Thinking that this could be configurable but IMO makes sense to ignore .git
by default.
Create two files where one is a substring of the other. The ASCII tree drawing is then broken as you get this β¬
instead of β
:
1.2G βββ¬ hanson-1
1.2G βββ hanson-13
Looking through your release history, your versioning scheme is all over the place.
I'm packaging your software on my Centos and Debian repositories and it's easier for me if the version is of a consistent standard, v0.0.0
. In these package managers, v4
is newer than your latest release of v0.4.5.0
. I would argue that you don't need 4 levels of version numbers either.
Just a suggestion to make things easier for the consumers of your software :)
dust -s
seems to have contradicting output compared to du --apparent-size
. Apparent size should usually be less than block size.
I ran dust -sn0 /gnu
on the guix package store and have 21G, while du --apparent-size -sh /gnu
returns 8.4G. I think dust counts hardlinks twice (since guix uses hardlinks to save space) although I'm not sure.
> dust
thread 'main' panicked at 'Couldn't enable color support: 87', C:\Users\me\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-.4.5\src/main.rs:16:5
That's on Win 8.1. On another machine with Win 10 it works.
So this isn't technically wrong but it looks weird
What is happening here is we have 2 large files and 1 small file deep in a nested tree.
Because we only have a few shads of greyscale in the terminal we 'use' the lighter shades up in the first subdirectory so they aren't available deeper in the tree.
What about only show the last leaf of the path per line?
Instead of this:
djin:git/dust> dust
65M .
65M βββ¬ ./target
49M βββ¬ ./target/debug
26M β βββ¬ ./target/debug/deps
21M β β βββ ./target/debug/deps/libclap-9e6625ac8ff074ad.rlib
13M β βββ ./target/debug/dust
8.9M β βββ¬ ./target/debug/incremental
6.7M β βββ¬ ./target/debug/incremental/dust-2748eiei2tcnp
6.7M β β βββ¬ ./target/debug/incremental/dust-2748eiei2tcnp/s-ezd6jnik5u-163pyem-1aab9ncf5glum
3.0M β β βββ ./target/debug/incremental/dust-2748eiei2tcnp/s-ezd6jnik5u-163pyem-1aab9ncf5glum/dep-graph.bin
2.2M β βββ¬ ./target/debug/incremental/dust-1dlon65p8m3vl
2.2M β βββ ./target/debug/incremental/dust-1dlon65p8m3vl/s-ezd6jncecv-1xsnfd0-4dw9l1r2th2t
15M βββ¬ ./target/release
9.2M βββ¬ ./target/release/deps
6.7M β βββ ./target/release/deps/libclap-87bc2534ea57f044.rlib
5.9M βββ ./target/release/dust
...show this:
djin:git/dust> dust
65M .
65M βββ¬ target
49M βββ¬ debug
26M β βββ¬ deps
21M β β βββ libclap-9e6625ac8ff074ad.rlib
13M β βββ dust
8.9M β βββ¬ incremental
6.7M β βββ¬ dust-2748eiei2tcnp
6.7M β β βββ¬ s-ezd6jnik5u-163pyem-1aab9ncf5glum
3.0M β β βββ dep-graph.bin
2.2M β βββ¬ dust-1dlon65p8m3vl
2.2M β βββ s-ezd6jncecv-1xsnfd0-4dw9l1r2th2t
15M βββ¬ release
9.2M βββ¬ deps
6.7M β βββ libclap-87bc2534ea57f044.rlib
5.9M βββ dust
Or maybe, show the short version as default and the complete path via an argument.
It does not take $COLUMNS
into account and stuff gets wrapped being hardly readable under terminal less than 100 width. I have no issue with dust
shortening the file name if the terminal is short.
1005M β βββ΄ iams-dev-environment
3.1G βββ΄ hlai
616M β βββ student
994M β β βββ node_modules
1.4G β βββ΄ apspace
608M β β βββ objects
691M β β βββ΄ .git
2.1G β β β βββ Components
2.3G β β β βββ΄ stage
2.3G β β βββ΄ database
3.6G β βββ΄ attendix
6.7G βββ΄ apu
I think at the very least, it should support terminal with 80 widths with a fallback even if stuff does not display well, without the terminal wrapped stuff up, it will still look pretty neat.
I was giving dust a try and noticed that the use of the -d
flag changes the displayed sizes of the directories, whereas I would have expect each directory to be the same size, but with fewer sub-levels displayed. Is this the expected behavior, a bug, or user error?
Here's the output of the dust repo after cloning it, comparing du
, dust -bd1
, and dust -b
(using -b for more readable output below):
$ du -d 1 -h | sort -h
24K ./ci
24K ./.github
52K ./src
68K ./media
84K ./tests
552K ./.git
153M ./target
154M .
$ cargo run -- -bd1
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running `target/debug/dust -bd1`
4.0K βββ README.md
4.0K βββ Cargo.toml
4.0K βββ .gitignore
8.0K βββ .github
12K βββ LICENSE
16K βββ target
24K βββ ci
24K βββ Cargo.lock
32K βββ src
40K βββ .git
52K βββ tests
68K βββ media
292K βββ΄ .
$ cargo run -- -b
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `target/debug/dust -b`
948K βββ query-cache.bin
3.9M βββ dep-graph.bin
10M βββ΄ s-fqutna58o2-1mf6920-1dfcidj0qrb4
10M βββ΄ dust-1u7onte9p4g5s
10M βββ΄ incremental
2.8M β βββ build_script_build-95c8841d5eeef07a
2.8M β βββ΄ log-95c8841d5eeef07a
2.8M β β βββ build_script_build-98b6810859c9cb39
2.8M β βββ΄ memchr-98b6810859c9cb39
3.1M β β βββ build-script-build
3.1M β βββ΄ bitflags-5ac1d02a416a61b2
3.2M β β βββ build_script_build-9091c386f088b04c
3.2M β βββ΄ libc-9091c386f088b04c
3.5M β β βββ build-script-build
3.5M β βββ΄ crossbeam-utils-408f2589721c053b
15M βββ΄ build
912K β βββ libtextwrap-1a0030a681f6ac5d.rlib
1.0M β βββ libregex-818c9001a7df9eb5.rmeta
1.0M β βββ libaho_corasick-39d24709df92682f.rmeta
1.1M β βββ libstrsim-c37e1feb7d72bc60.rlib
1.3M β βββ libnum_cpus-7c7ca82d2b6385a6.rlib
1.4M β βββ liblscolors-d48fed5629317cfd.rlib
1.5M β βββ libbstr-8fff9e7d83cfd68c.rlib
1.6M β βββ libwalkdir-d08a403e2772aeb4.rlib
1.6M β βββ libcrossbeam_utils-4e0e4e297bcafc8b.rlib
1.6M β βββ libautocfg-b11cbca6ecbb3954.rlib
1.7M β βββ liblibc-c64d0ff9390f98b5.rmeta
1.7M β βββ libclap-aeb92d621b503b05.rmeta
1.8M β βββ libcrossbeam_channel-7116bcca9ad76a0b.rlib
2.0M β βββ liblibc-c64d0ff9390f98b5.rlib
4.9M β βββ libaho_corasick-39d24709df92682f.rlib
5.2M β βββ libregex_syntax-d37ef5e024ea9658.rmeta
6.0M β βββ libglobset-3998d750ef9972f8.rlib
8.8M β βββ libignore-92c56c21ac8db7b8.rlib
10M β βββ libregex-818c9001a7df9eb5.rlib
13M β βββ libregex_syntax-d37ef5e024ea9658.rlib
16M β βββ libclap-aeb92d621b503b05.rlib
31M β βββ dust-321965f5bb0f1679
125M βββ΄ deps
152M βββ΄ debug
152M βββ΄ target
153M βββ΄ .
It would be nice to have an options shortcut (--tree?) that makes dust behave more like tree, by that I mean:
on root directory
dust /
behaves differently to
dust
dust / - misses out the top level directories.
This is probably a bug counting the '/'s
$ ls foo
ls: foo: No such file or directory
$ dust foo
Did not have permissions for all directories
$
This error message is wrong. I'd expect "no such file or directory" instead like ls.
DaisyDisk uses this and it is very fast at gather diskspace information.
Is there any interest in creating a dust chocolatey package (https://chocolatey.org/docs/create-packages)? I think it could be beneficial.
We could base the package on the Windows release artifacts:
https://github.com/bootandy/dust/releases
Thanks for the nice work on dust!
I ran into an issue on Ubuntu 18.04 where I have a folder called folder.bag.map and a file called file.bag. The resulting dust output when run in the parent folder is:
user:~/developer/$ dust
62G ββ¬ .
19G βββ¬ file.bag
179M β βββ¬ folder.bag.map
119M β βββ¬ subfolder1
119M β | βββ file1.txt
59M β βββ¬ subfolder2
38M β βββ file2.txt
i.e. it seems like the file file.bag is treated like a folder and folder.bag.map is treated as a subfolder of the file. Maybe there's a parsing issue here somewhere?
Consider adding an -x
option, which is available in both du
and ncdu
. The option would exclude any directories that reside on other filesystems. This is useful when you want to find what directories are taking all the space on a particular filesystem, but have network or other disks mounted in other directories.
For example, ncdu -x
from the root directory will show this on my system:
ncdu 1.13 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
38.2 GiB [##########] /var
35.4 GiB [######### ] /home
4.4 GiB [# ] /nix
4.4 GiB [# ] /usr
...
4.0 KiB [ ] /mnt
...
With dust it shows:
$ dust -d1
277G ββ¬ .
192G βββ mnt
40G βββ var
35G βββ home
4.4G βββ nix
4.4G βββ usr
...
/mnt
has a CIFS shared mounted from a NAS, so it throws off the totals.
#46 is related, but would be less convenient to use if there were other filesystems mounted in various locations.
Versions:
Error message:
$ cargo install du-dust
Updating crates.io index
Downloaded du-dust v0.4.4
Downloaded 1 crate (21.7 KB) in 3.21s
Installing du-dust v0.4.4
Compiling autocfg v0.1.7
Compiling semver-parser v0.7.0
Compiling lazy_static v1.4.0
Compiling cfg-if v0.1.10
Compiling libc v0.2.66
Compiling scopeguard v1.0.0
Compiling winapi v0.3.8
Compiling rayon-core v1.7.0
Compiling bitflags v1.2.1
Compiling either v1.5.3
Compiling unicode-width v0.1.7
Compiling vec_map v0.8.1
Compiling strsim v0.8.0
Compiling semver v0.9.0
Compiling textwrap v0.11.0
Compiling rustc_version v0.2.3
Compiling num_cpus v1.12.0
Compiling crossbeam-utils v0.7.0
Compiling crossbeam-epoch v0.8.0
Compiling memoffset v0.5.3
Compiling crossbeam-queue v0.2.1
Compiling crossbeam-channel v0.4.0
Compiling crossbeam-deque v0.7.2
Compiling crossbeam v0.7.3
Compiling rayon v1.3.0
Compiling atty v0.2.14
Compiling ansi_term v0.12.1
Compiling clap v2.33.0
Compiling jwalk v0.4.0
Compiling du-dust v0.4.4
error[E0425]: cannot find function `get_filesystem` in this scope
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\mod.rs:103:24
|
103 | if let Ok(a) = get_filesystem(file_name) {
| ^^^^^^^^^^^^^^ not found in this scope
error[E0658]: use of unstable library feature 'windows_by_handle'
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\platform.rs:29:52
|
29 | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
| ^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'windows_by_handle'
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\platform.rs:29:69
|
29 | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
| ^^^^^^^^^^^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0308]: mismatched types
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\platform.rs:28:5
|
26 | pub fn get_metadata(d: &DirEntry, use_apparent_size: bool) -> Option<(u64, Option<(u64, u64)>)> { | --------------------------------- expected `std::option::Option<(u64, std::option::Option<(u64, u64)>)>` because of return type
27 | use std::os::windows::fs::MetadataExt;
28 | / d.metadata.as_ref().unwrap().as_ref().ok().map(|md| {
29 | | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
30 | | (md.file_size(), windows_equivalent_of_inode)
31 | | })
| |______^ expected `u64`, found enum `std::option::Option`
|
= note: expected enum `std::option::Option<(_, std::option::Option<(u64, u64)>)>`
found enum `std::option::Option<(_, std::option::Option<(std::option::Option<u64>, std::option::Option<u32>)>)>`
error[E0658]: use of unstable library feature 'windows_by_handle'
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\platform.rs:55:17
|
55 | Ok(metadata.volume_serial_number())
| ^^^^^^^^^^^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0308]: mismatched types
--> C:\Users\Winterreise\.cargo\registry\src\github.com-1ecc6299db9ec823\du-dust-0.4.4\src\utils\platform.rs:55:8
|
55 | Ok(metadata.volume_serial_number())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found enum `std::option::Option`
|
= note: expected type `u64`
found enum `std::option::Option<u32>`
error: aborting due to 6 previous errors
Some errors have detailed explanations: E0308, E0425, E0658.
For more information about an error, try `rustc --explain E0308`.
error: failed to compile `du-dust v0.4.4`, intermediate artifacts can be found at `C:\Users\WINTER~1\AppData\Local\Temp\cargo-installTgeiQE`
Caused by:
could not compile `du-dust`.
To learn more, run the command again with --verbose.
Thanks!
Awesome work!
Any chance of adding a man page?
Maybe something like ripgrep has using asciidoc?
https://github.com/BurntSushi/ripgrep/blob/7cbc535d70a53c81dfa3e58552c01f21c2e38d28/build.rs#L66
β― man dust
No manual entry for dust
I see dust --help
works, but it'd be handy to have a man page too, since it's many peoples first instinct when trying a new cli tool.
This is using a nixos-unstable pin from the past few days.
Here's a nix-shell command with that exact pin for you to reproduce:
$ nix-shell -I https://github.com/NixOS/nixpkgs-channels/archive/61525137fd1002f6f2a5eb0ea27d480713362cd5.tar.gz -p dust --pure --run dust
these paths will be fetched (11.28 MiB download, 143.87 MiB unpacked):
/nix/store/a9p65g3q268clb8cbk1hhkm0yjki60dn-dust-0-91
/nix/store/c30p181sp4jy5dr8lswgl431lyvfjmxz-pixie-0-r1364-jit
/nix/store/k8bpj097am7lyasaamassdx6rjpxl98j-boost-1.69.0
/nix/store/w3gv4wmbp0nwb69zgxairdw7rq9060nr-boost-1.69.0-dev
copying path '/nix/store/k8bpj097am7lyasaamassdx6rjpxl98j-boost-1.69.0' from 'https://cache.nixos.org'...
copying path '/nix/store/w3gv4wmbp0nwb69zgxairdw7rq9060nr-boost-1.69.0-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/c30p181sp4jy5dr8lswgl431lyvfjmxz-pixie-0-r1364-jit' from 'https://cache.nixos.org'...
copying path '/nix/store/a9p65g3q268clb8cbk1hhkm0yjki60dn-dust-0-91' from 'https://cache.nixos.org'...
/nix/store/a9p65g3q268clb8cbk1hhkm0yjki60dn-dust-0-91/bin/dust: line 26: which: command not found
/nix/store/a9p65g3q268clb8cbk1hhkm0yjki60dn-dust-0-91/bin/dust: line 29: /nix/store/c30p181sp4jy5dr8lswgl431lyvfjmxz-pixie-0-r1364-jit/bin/pixie-vm: No such file or directory
dust -n STR
Crashes.
dust -d ASDF
Should warn instead of silence
The following part in the README.md isn't quite correct
[du -b] for when you have a bunch and need to sort the output numerically, and youβre obligated to either further pass it into something like awk to turn bytes into the appropriate human-friendly unit like mega or gigabytes, or you just do some rough math in your head and use the ordering to sanity check.
Given that sort has a -h
flag for sorting human-readable numbers correctly, that part is a bit misleading.
Edit: I just noticed that sort -h is already given as an alternative at the bottom. Changed comment text.
Even on an empty directory, dust hangs:
$ mkdir empty
$ dust empty
^C
It works fine if I specify the number of threads:
$ dust -t1 empty
4.0K ββ¬ empty
It works fine on all my other boxes, so I'm guessing it's the fact that this one has only 1 core that is to blame. Here's a stack trace:
Thread 1 "dust" received signal SIGINT, Interrupt.
0x00007ffff7e9562b in sched_yield () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff7e9562b in sched_yield () from /usr/lib/libc.so.6
#1 0x00005555555ff045 in jwalk::core::ordered_queue::OrderedQueueIter<T>::next_strict (self=0x7fffffff6d38) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/ordered_queue.rs:150
#2 0x00005555555ff817 in <jwalk::core::ordered_queue::OrderedQueueIter<T> as core::iter::traits::iterator::Iterator>::next (self=0x7fffffff6d38) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/ordered_queue.rs:170
#3 0x0000555555618ec0 in <jwalk::core::iterators::ReadDirIter as core::iter::traits::iterator::Iterator>::next (self=0x7fffffff6d30) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/iterators.rs:40
#4 0x00005555555cd3b5 in <core::iter::adapters::Peekable<I> as core::iter::traits::iterator::Iterator>::next (self=0x7fffffff6d30) at /build/rust/src/rustc-1.40.0-src/src/libcore/iter/adapters/mod.rs:1260
#5 0x00005555556194a6 in jwalk::core::iterators::DirEntryIter::push_next_read_dir_iter (self=0x7fffffff6d18) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/iterators.rs:65
#6 0x0000555555619984 in <jwalk::core::iterators::DirEntryIter as core::iter::traits::iterator::Iterator>::next (self=0x7fffffff6d18) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/iterators.rs:96
#7 0x000055555559cf38 in dust::utils::examine_dir (top_dir=..., apparent_size=false, inodes=0x7fffffff7638, data=0x7fffffff7670, file_count_no_permission=0x7fffffff7630, threads=...) at src/utils/mod.rs:112
#8 0x000055555559cbc4 in dust::utils::get_dir_tree (top_level_names=0x7fffffffdd58, apparent_size=false, threads=...) at src/utils/mod.rs:79
#9 0x0000555555590fdb in dust::main () at src/main.rs:115
(gdb) thread 2
[Switching to thread 2 (Thread 0x7ffff7dac700 (LWP 4624))]
#0 0x00007ffff7e9562b in sched_yield () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff7e9562b in sched_yield () from /usr/lib/libc.so.6
#1 0x00005555555fe9ad in jwalk::core::ordered_queue::OrderedQueueIter<T>::next_relaxed (self=0x7ffff7da9960) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/ordered_queue.rs:122
#2 0x00005555555ff7cb in <jwalk::core::ordered_queue::OrderedQueueIter<T> as core::iter::traits::iterator::Iterator>::next (self=0x7ffff7da9960) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/ordered_queue.rs:169
#3 0x000055555560ab64 in <rayon::iter::par_bridge::IterParallelProducer<Iter> as rayon::iter::plumbing::UnindexedProducer>::fold_with (self=..., folder=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/par_bridge.rs:177
#4 0x00005555555e4184 in rayon::iter::plumbing::bridge_unindexed_producer_consumer (migrated=false, splitter=..., producer=..., consumer=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/plumbing/mod.rs:482
#5 0x00005555555e468a in rayon::iter::plumbing::bridge_unindexed_producer_consumer::{{closure}} (context=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/plumbing/mod.rs:474
#6 0x00005555555f9abe in rayon_core::join::join_context::call_a::{{closure}} () at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/join/mod.rs:125
#7 0x00005555555d8a36 in <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=()) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:317
#8 0x00005555555e30d1 in std::panicking::try::do_call (data=0x7ffff7da7e20 "\250\223\332\367\377\177\000") at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:287
#9 0x000055555581463a in __rust_maybe_catch_panic ()
#10 0x00005555555e2778 in std::panicking::try (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:265
#11 0x00005555555d9bc6 in std::panic::catch_unwind (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:396
#12 0x00005555555ffe23 in rayon_core::unwind::halt_unwinding (func=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/unwind.rs:17
#13 0x00005555555f91df in rayon_core::join::join_context::{{closure}} (worker_thread=0x7ffff7dab100, injected=false) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/join/mod.rs:146
#14 0x000055555560a2ff in rayon_core::registry::in_worker (op=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:799
#15 0x00005555555f8ea7 in rayon_core::join::join_context (oper_a=..., oper_b=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/join/mod.rs:133
#16 0x00005555555e3f49 in rayon::iter::plumbing::bridge_unindexed_producer_consumer (migrated=false, splitter=..., producer=..., consumer=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/plumbing/mod.rs:473
#17 0x00005555555e3804 in rayon::iter::plumbing::bridge_unindexed (producer=..., consumer=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/plumbing/mod.rs:452
#18 0x000055555560f44d in <rayon::iter::par_bridge::IterBridge<Iter> as rayon::iter::ParallelIterator>::drive_unindexed (self=..., consumer=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/par_bridge.rs:87
#19 0x00005555555f6d20 in <rayon::iter::map_with::MapWith<I,T,F> as rayon::iter::ParallelIterator>::drive_unindexed (self=..., consumer=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/map_with.rs:53
#20 0x00005555555f63c7 in rayon::iter::from_par_iter::<impl rayon::iter::FromParallelIterator<()> for ()>::from_par_iter (par_iter=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/from_par_iter.rs:226
#21 0x00005555555f6404 in rayon::iter::ParallelIterator::collect (self=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/mod.rs:1886
#22 0x000055555560ee79 in rayon::iter::ParallelIterator::for_each_with (self=..., init=..., op=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.3.0/src/iter/mod.rs:393
#23 0x000055555561b334 in jwalk::core::multi_threaded_walk::{{closure}} () at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/jwalk-0.4.0/src/core/mod.rs:142
#24 0x00005555555d8ab5 in <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=()) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:317
#25 0x00005555555e2ff1 in std::panicking::try::do_call (data=0x7ffff7daa800 "Π\217UUU\000") at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:287
#26 0x000055555581463a in __rust_maybe_catch_panic ()
#27 0x00005555555e2dd8 in std::panicking::try (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:265
#28 0x00005555555d9c26 in std::panic::catch_unwind (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:396
#29 0x00005555555ffea3 in rayon_core::unwind::halt_unwinding (func=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/unwind.rs:17
#30 0x00005555555fa018 in rayon_core::spawn::spawn_job::{{closure}} () at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/spawn/mod.rs:98
#31 0x00005555555fcb98 in <rayon_core::job::HeapJob<BODY> as rayon_core::job::Job>::execute (this=0x5555558f80b0) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/job.rs:167
#32 0x0000555555631d06 in rayon_core::job::JobRef::execute (self=0x7ffff7daadc0) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/job.rs:59
#33 0x00005555556233fd in rayon_core::registry::WorkerThread::execute (self=0x7ffff7dab100, job=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:681
#34 0x0000555555622d1c in rayon_core::registry::WorkerThread::wait_until_cold (self=0x7ffff7dab100, latch=0x5555558f7cf0) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:665
#35 0x0000555555622b16 in rayon_core::registry::WorkerThread::wait_until (self=0x7ffff7dab100, latch=0x5555558f7cf0) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:639
#36 0x0000555555623c78 in rayon_core::registry::main_loop (worker=..., registry=..., index=0) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:759
#37 0x00005555556206c0 in rayon_core::registry::ThreadBuilder::run (self=...) at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:56
#38 0x0000555555620d01 in <rayon_core::registry::DefaultSpawn as rayon_core::registry::ThreadSpawn>::spawn::{{closure}} () at /home/tavianator/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.7.0/src/registry.rs:101
#39 0x000055555562c652 in std::sys_common::backtrace::__rust_begin_short_backtrace (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/sys_common/backtrace.rs:129
#40 0x00005555556478c1 in std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}} () at /build/rust/src/rustc-1.40.0-src/src/libstd/thread/mod.rs:469
#41 0x00005555556246c1 in <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once (self=..., _args=()) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:317
#42 0x000055555564122e in std::panicking::try::do_call (data=0x7ffff7dab900 "\000") at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:287
#43 0x000055555581463a in __rust_maybe_catch_panic ()
#44 0x0000555555640ea8 in std::panicking::try (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panicking.rs:265
#45 0x0000555555625683 in std::panic::catch_unwind (f=...) at /build/rust/src/rustc-1.40.0-src/src/libstd/panic.rs:396
#46 0x00005555556476a6 in std::thread::Builder::spawn_unchecked::{{closure}} () at /build/rust/src/rustc-1.40.0-src/src/libstd/thread/mod.rs:468
#47 0x000055555562cdf4 in core::ops::function::FnOnce::call_once{{vtable-shim}} () at /build/rust/src/rustc-1.40.0-src/src/libcore/ops/function.rs:227
#48 0x000055555580699f in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once ()
#49 0x0000555555813b10 in std::sys::unix::thread::Thread::new::thread_start ()
#50 0x00007ffff7f994cf in start_thread () from /usr/lib/libpthread.so.0
#51 0x00007ffff7eae2d3 in clone () from /usr/lib/libc.so.6
From Reddit:
Once thing I notice however is that you elected for limiting the number of lines rather then the depth of the tree. It would be a lot more useful to specify the depth of the tree like the way tree -L 3 works.
Not yet sure how this would work. Would "dust -d 2" show:
I imagine the (1) is correct
It doesn't seem to work on Windows 8.1:
> dust
β[38;5;196m 597Mβ[0m ββ¬ .
I get the same output, no matter which flags I pass. Any idea why?
v0.4.3 builds and installs, but the changes in bdc3d40 break windows compilation (even when using 'nightly').
I just noticed when updating to the most recent version (v0.4.4).
I've looked through the code and it looks like using the unstable metadata.file_index()
and metadata.volume_serial_number()
as well as missing get_filesystem()
are the culprits.
Here's the build output:
C:>cargo +nightly build
Compiling du-dust v0.4.3 (C:\Users\Roy\OneDrive\Projects\rust\rs.dust)
error[E0425]: cannot find function `get_filesystem` in this scope
--> src\utils\mod.rs:102:26
|
102 | if let Some(a) = get_filesystem(file_name) {
| ^^^^^^^^^^^^^^ not found in this scope
error[E0658]: use of unstable library feature 'windows_by_handle'
--> src\utils\platform.rs:28:52
|
28 | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
| ^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0658]: use of unstable library feature 'windows_by_handle'
--> src\utils\platform.rs:28:69
|
28 | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
| ^^^^^^^^^^^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0308]: mismatched types
--> src\utils\platform.rs:27:5
|
25 | pub fn get_metadata(d: &DirEntry, use_apparent_size: bool) -> Option<(u64, Option<(u64, u64)>)> {
| --------------------------------- expected `std::option::Option<(u64, std::option::Option<(u64, u64)>)>` because of return type
26 | use std::os::windows::fs::MetadataExt;
27 | / d.metadata.as_ref().unwrap().as_ref().ok().map(|md| {
28 | | let windows_equivalent_of_inode = Some((md.file_index(), md.volume_serial_number()));
29 | | (md.file_size(), windows_equivalent_of_inode)
30 | | })
| |______^ expected `u64`, found enum `std::option::Option`
|
= note: expected enum `std::option::Option<(_, std::option::Option<(u64, u64)>)>`
found enum `std::option::Option<(_, std::option::Option<(std::option::Option<u64>, std::option::Option<u32>)>)>`
error[E0658]: use of unstable library feature 'windows_by_handle'
--> src\utils\platform.rs:54:19
|
54 | Some(metadata.volume_serial_number())
| ^^^^^^^^^^^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/63010
= help: add `#![feature(windows_by_handle)]` to the crate attributes to enable
error[E0308]: mismatched types
--> src\utils\platform.rs:54:10
|
54 | Some(metadata.volume_serial_number())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found enum `std::option::Option`
|
= note: expected type `u64`
found enum `std::option::Option<u32>`
error: aborting due to 6 previous errors
Some errors have detailed explanations: E0308, E0425, E0658.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `du-dust`.
To learn more, run the command again with --verbose.
try using: https://github.com/servo/rust-fnv
try minimizing string creation and pathbuf creation
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.