1 unstable release

✓ Uses Rust 2018 edition

0.1.0-alpha.1 Oct 16, 2019

#130 in Filesystem


1.5K SLoC


durduff lets you compare directories file by file.


Packages for Linux distros, BSDs, Mac and Windows are a TODO. In the mean time you can install it using cargo from crates.io:

$ cargo install durduff


The executable

You will need make and cargo to do that.

To build the debug version, run:

$ make build-debug

The resulting binary will be located at target/debug/durduff.

To build the release version, run:

$ make build-release

The resulting binary will be located at target/release/durduff.

The man page

You will need make, gzip and scdoc to do that.

$ make man

The resulting gzipped man page will be located at durduff.1.gz.

Running tests

You will need make, cargo and shelltestrunner to do that.

Unit tests of the debug version:

$ make debug-unit-tests

Unit tests of the release version:

$ make release-unit-tests

Functional tests of the debug version:

$ make debug-func-tests

Functional tests of the release version:

$ make release-func-tests


       durduff [option]... <old> <new>

       -q, --brief
           Report only when directories differ.

       -p, --progress
           Show progress bar.

       --color <when>
           Print output in color (<when> may be one of: never, always, auto).

           Utf-8 percent-encode paths using the path percent-encode set. If
           you want to parse durduff's output in a script, then you should use
           this option.

       -b, --block-size <block-size>
           Read files in blocks of <block-size> bytes.

       -h, --help
           Print help information and exit.

           Print version information and exit.

Example usage

$ tree old new
├── bar
├── c
├── d
└── foo
    ├── a
    └── baz
├── b
├── c
├── d
└── foo
    ├── a
    └── baz

5 directories, 7 files
$ diff -q {old,new}/foo/a
Files old/foo/a and new/foo/a differ
$ diff -q {old,new}/c
Files old/c and new/c differ
$ diff -q {old,new}/d
$ durduff old new
+ b
- bar
~ c
~ foo/a

Bugs, patches, support

Report bugs to: ~yakubin/durduff@todo.sr.ht, or via web: https://todo.sr.ht/~yakubin/durduff.

Send patches to: ~yakubin/durduff-devel@lists.sr.ht.

If you need help with durduff, send a mail to: ~yakubin/durduff-user@lists.sr.ht.

Please, remember about the mailing list ettiquette when using these mailing lists.