Tonight I ran across jdupes which I had not seen before. It is a fork of the venerable fdupes with quite a few performance improvements. Performance?! Well I had to try it of course. Here are a few runs of jdupes and dupd on my home directory for comparison (using -A to skip hidden files which is the default in dupd):
% repeat 5 time ./jdupes -r $HOME -A > out Examining 164413 files, 22108 dirs (in 1 specified) ./jdupes -r $HOME -A > out 3.06s user 10.96s system 99% cpu 14.156 total Examining 164413 files, 22108 dirs (in 1 specified) ./jdupes -r $HOME -A > out 3.07s user 10.82s system 99% cpu 14.029 total Examining 164413 files, 22108 dirs (in 1 specified) ./jdupes -r $HOME -A > out 3.00s user 11.01s system 99% cpu 14.156 total Examining 164413 files, 22108 dirs (in 1 specified) ./jdupes -r $HOME -A > out 3.22s user 11.03s system 98% cpu 14.414 total Examining 164413 files, 22108 dirs (in 1 specified) ./jdupes -r $HOME -A > out 3.04s user 10.87s system 99% cpu 14.042 total
So, consistently about 14 seconds.
% repeat 5 time dupd scan -p $HOME -q dupd scan -p $HOME -q 3.99s user 6.76s system 139% cpu 7.691 total dupd scan -p $HOME -q 4.16s user 6.28s system 140% cpu 7.416 total dupd scan -p $HOME -q 4.13s user 6.53s system 141% cpu 7.540 total dupd scan -p $HOME -q 3.98s user 6.39s system 139% cpu 7.405 total dupd scan -p $HOME -q 4.00s user 6.44s system 140% cpu 7.404 total
About 7.5 seconds, or just under that, for dupd.
I still have a handful of ideas to make dupd faster, as I find some spare time I’ll try them out.