logoalt Hacker News

TacticalCodertoday at 10:41 AM4 repliesview on HN

> deduplication at the file level: every file is now stored under its BLAKE3 hash

Blake3 is really a wonderfully fast cryptographic hash. I use it for my own "deduplication / integrity / berzerker" utility (which I made before LLMs were a thing).

If I've got a file named:

    DSC98731-b3-7b39197a22.JPG
then:

    - if that file doesn't checksum back to 7b39197a22 there's a file integrity problem (amazing and it already helped me troubleshoot issues)

    - if any other file has the same Blake3 7b39197a22 hash, it's a duplicate

    - if that 7b39197a22 checksum is in my database, "things can happen".
For example my DB can say "any file with a Blake3 hash of 7b39197a22 can always be deleted" or "any file with a Blake3 hash of 887463c09e, if it's got a generic filename like "dscXXXXX" can always be renamed to "20260722jackJohnAtTheBeach-b3-778463c09e.jpg" (or whatever suits you).

It's really great (and I know several here independently made similar schemes) and Blake3 is an amazing hash for those kind of use.


Replies

Someonetoday at 11:03 AM

For those wondering like me: Blake3 generates hashes of at least 224 bits, not, as a literal reading of that comment indicates, 40 bits (which would be bad for file deduplication, giving you a 50% hash collision after around a million files)

show 1 reply
maelntoday at 12:04 PM

Another cool thing about BLAKE3 is that it is a merkle tree. Not only it allows for good parallelism, but it also has a lot of cool property for data transfer. For example, you can check for partial validity, which allow for streaming error-detection and resend during the transfer. You only need to have the data and checksum in a way that you can start to reconstruct one or more subtree.

gchamonlivetoday at 1:07 PM

> I use it for my own "deduplication / integrity / berzerker" utility

Do you have it in a public repo you could share?

show 1 reply
dist-epochtoday at 11:07 AM

It's annoying that most file formats don't checksum their own content.

Even formats which should know better, like SQLite, delegate that to the filesystem, most of which are also not checksumed and which delegate that further to the storage.

PostgreSQL, which prides itself by it's quality and reliability, only turned on checksums by default in the last version, 18.

This is one great benefit of using .zip files as file formats, you get this for free.

show 3 replies