{"id":23418547,"url":"https://github.com/rustshop/rblake3sum","last_synced_at":"2025-04-09T08:21:19.857Z","repository":{"id":198633128,"uuid":"701191312","full_name":"rustshop/rblake3sum","owner":"rustshop","description":"A recursive blake3 digest (hash) of a file-system path ","archived":false,"fork":false,"pushed_at":"2023-10-06T06:41:14.000Z","size":66,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T03:43:04.541Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustshop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-06T05:58:07.000Z","updated_at":"2024-04-24T07:36:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"90c56a8e-d8f4-4b07-876b-8bb51ab360f1","html_url":"https://github.com/rustshop/rblake3sum","commit_stats":null,"previous_names":["rustshop/rblake3sum"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustshop%2Frblake3sum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustshop%2Frblake3sum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustshop%2Frblake3sum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustshop%2Frblake3sum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustshop","download_url":"https://codeload.github.com/rustshop/rblake3sum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248000102,"owners_count":21031104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-23T00:20:17.232Z","updated_at":"2025-04-09T08:21:19.831Z","avatar_url":"https://github.com/rustshop.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `rblake3sum`\n\nA recursive blake3 digest (hash) of a file-system path. A fork of [`rblake2sum`](https://github.com/crev-dev/rblake2sum).\n\nThe recursive file-system digest algorithm used is described in a\nunderlying library [crev-recursive-digest](https://github.com/crev-dev/recursive-digest).\n\nUnder the hood, it uses [`walkdir`](https://crates.io/crates/walkdir) and\n[`blake3`](https://crates.io/crates/blake3), with efficient IO handling, which makes\nit fast.\n\n## Using\n\n```\n$ rblake3sum /usr/\nf60d19435bb5e859d911c6600dcf96856dfce5de94d4fefd2b2675051ac10fc36dbde87fd86a30eb5224209b47263eb546bd9e3d7bdf64c1f26a7dccf51809af /usr/\n\n$ rblake3sum --help\nrblake3sum 0.2.0\nDawid Ciężarkiewicz \u003cdpc@dpc.pw\u003e\nCalculate recursive blake3 digest for path or directory\n\nUSAGE:\n    rblake3sum [FLAGS] [paths]...\n\nFLAGS:\n        --base64     \n    -h, --help       Prints help information\n    -V, --version    Prints version information\n\nARGS:\n    \u003cpaths\u003e...\n```\n\n## Installing\n\nYou can compile from source, using `cargo`:\n\n```\ncargo install rblake3sum\n```\n\nor use [precompiled release binaries](https://github.com/crev-dev/rblake3sum/releases).\n\n## Notes\n\nThis tool calculates a digest of a *content of a path*. To illustrate:\n\n```\n$ mkdir a\n$ touch a/file\n$ cp -r a b\n$ rblake3sum a b\n3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 a\n3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 b\n```\n\nDifferent path, same content. However:\n\n```\n$ mv a/file a/differentfile\n$ rblake3sum a\n6e4a518652881f356d863ae034e7508648455536e5393824b5cc96232786a4733ffb9c3cdd62bda4741ca0bfe60a181f6ae47959ceb0493716699e9b28f686ac a\n```\n\nThe name of the files or directories in the path is a part of its content.\n\n\nIn the simplest case, a `rblake3sum` of a file is like a normal `b2sum` of the content, except\nprefixed with an `F` (to denote the type of the path). To illustrate:\n\n```\n$ echo -en \"F\" \u003e f\n$ cat f differentfile | hexdump -C /dev/stdin\n00000000  66                                                |f|\n00000001\n$ cat f differentfile | b2sum /dev/stdin\nc4df78482e7b82e1eea4026a9f61732a62a15a1741737a539733713c2beb3e0057f076934e9fb60646771a4d9084d32a8e48fe838108a842262cf2aad996fa26  /dev/stdin\n$ rblake3sum differentfile\nc4df78482e7b82e1eea4026a9f61732a62a15a1741737a539733713c2beb3e0057f076934e9fb60646771a4d9084d32a8e48fe838108a842262cf2aad996fa26 differentfile\n$ echo \"foobar\" \u003e file\n$ cat f file | b2sum /dev/stdin\n96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec  /dev/stdin\n$ rblake3sum file\n96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec file\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustshop%2Frblake3sum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustshop%2Frblake3sum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustshop%2Frblake3sum/lists"}