{"id":18295199,"url":"https://github.com/crev-dev/rblake2sum","last_synced_at":"2025-04-05T12:31:26.639Z","repository":{"id":96924121,"uuid":"237557606","full_name":"crev-dev/rblake2sum","owner":"crev-dev","description":"A recursive blake2 digest (hash) of a file-system path","archived":false,"fork":false,"pushed_at":"2023-10-06T05:56:23.000Z","size":58,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-21T03:51:15.963Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/crev-dev.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-01T03:47:45.000Z","updated_at":"2024-11-05T00:01:48.000Z","dependencies_parsed_at":"2024-11-05T14:42:49.713Z","dependency_job_id":"d66bf252-f3bf-4ed1-815e-b08513b2f53a","html_url":"https://github.com/crev-dev/rblake2sum","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crev-dev%2Frblake2sum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crev-dev%2Frblake2sum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crev-dev%2Frblake2sum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crev-dev%2Frblake2sum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crev-dev","download_url":"https://codeload.github.com/crev-dev/rblake2sum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247338787,"owners_count":20922997,"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-11-05T14:33:55.958Z","updated_at":"2025-04-05T12:31:21.621Z","avatar_url":"https://github.com/crev-dev.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `rblake2sum`\n\nA recursive blake2 digest (hash) of a file-system path.\n\nLike `sha256sum` (or rather, less known `blake2`-based: `b2sum`), but for directories.\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[`blake2`](https://crates.io/crates/blake2), with efficient IO handling, which makes\nit fast.\n\n## Using\n\n```\n$ rblake2sum /usr/\nf60d19435bb5e859d911c6600dcf96856dfce5de94d4fefd2b2675051ac10fc36dbde87fd86a30eb5224209b47263eb546bd9e3d7bdf64c1f26a7dccf51809af /usr/\n\n$ rblake2sum --help\nrblake2sum 0.2.0\nDawid Ciężarkiewicz \u003cdpc@dpc.pw\u003e\nCalculate recursive blake2 digest for path or directory\n\nUSAGE:\n    rblake2sum [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 rblake2sum\n```\n\nor use [precompiled release binaries](https://github.com/crev-dev/rblake2sum/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$ rblake2sum a b\n3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 a\n3ecc0360bcfc32fd672443ecbe9b7e278be9e0a731cfedb4ada782bf9753ddd8768d467fcb7ee0b6e5920d1fe3352a6314f2ba73f3cfb3eed7c1a88dfe92cc38 b\n```\n\nDifferent path, same content. However:\n\n```\n$ mv a/file a/differentfile\n$ rblake2sum 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 `rblake2sum` 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$ rblake2sum differentfile\nc4df78482e7b82e1eea4026a9f61732a62a15a1741737a539733713c2beb3e0057f076934e9fb60646771a4d9084d32a8e48fe838108a842262cf2aad996fa26 differentfile\n$ echo \"foobar\" \u003e file\n$ cat f file | b2sum /dev/stdin\n96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec  /dev/stdin\n$ rblake2sum file\n96178099394650380ee4bb34aed2eae3ef7a7782adbec3a9aeb436697544b63ed0218ff1240ea1823539183c5e183f211fa8d092bfebe351dc34f77047bceeec file\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrev-dev%2Frblake2sum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrev-dev%2Frblake2sum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrev-dev%2Frblake2sum/lists"}