10 releases
0.1.8 | Nov 19, 2023 |
---|---|
0.1.7 | Jun 22, 2023 |
0.1.4 | May 31, 2023 |
#528 in Command line utilities
51 downloads per month
20KB
378 lines
dircs
A small cross-platform utility to get the hash of a file or directory. Comes with a variety of hash functions to choose from.
Note: I mostly wrote this for my own personal use, so there might be a lot of rough edges. Feel free to submit pull requests, feature requests, or bug reports.
Installation
dircs
is on crates.io and can be installed with cargo
:
cargo install dircs --locked
As of writing, dircs
has been tested to build using Rust 1.69.0.
Usage
$ dircs /your/path/here
/your/path/here -> 72ce3b5f2df28051cf7204712fe93de6b7b6d1f8e8fe5972b117a248423c290c
By default, dircs
will use BLAKE3 with memmapping disabled, and an automatic level of parallelism.
See more options by running dircs -h
.
Supported hash functions
Currently, the following hash functions are supported:
- BLAKE3
- BLAKE2
- MD5
- SHA1
- SHA2 (digest sizes of 256, 384, 512)
- SHA3 (digest sizes of 256, 384, 512)
How are hashes determined?
For a single file or a directory with just one file, dircs
will simply hash the file using the specified hash
function, and output the bytes as a hex string.
For a directory with multiple files, we do the following:
- For every file, get the hash using the chosen hashing function. This occurs in parallel if possible.
- With this generated list of hashes, sort them based on file name.
- Feed each hash in this order into the chosen hash function to generate one final hash, which is then output as a hex string.
Thanks
Thanks to:
- All library authors whose libraries I used.
- The authors of b3sum, which I referenced a lot.
Dependencies
~6.5MB
~118K SLoC