{"id":21919442,"url":"https://github.com/zyd8/hash-transfer-cli","last_synced_at":"2026-04-10T17:16:16.213Z","repository":{"id":215659897,"uuid":"739492654","full_name":"Zyd8/hash-transfer-cli","owner":"Zyd8","description":"A secure command-line tool for copying and moving files securely between locations. This tool supports a variety of hash algorithms to ensure data integrity during the transfer process.","archived":false,"fork":false,"pushed_at":"2024-08-05T02:57:29.000Z","size":34290,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-27T10:09:23.340Z","etag":null,"topics":["csharp","data-integrity","dotnet","hashing","python"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Zyd8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-01-05T17:40:32.000Z","updated_at":"2024-08-05T02:57:32.000Z","dependencies_parsed_at":"2024-08-05T04:12:29.566Z","dependency_job_id":null,"html_url":"https://github.com/Zyd8/hash-transfer-cli","commit_stats":null,"previous_names":["zyd8/hash-transfer-cli"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zyd8%2Fhash-transfer-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zyd8%2Fhash-transfer-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zyd8%2Fhash-transfer-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zyd8%2Fhash-transfer-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zyd8","download_url":"https://codeload.github.com/Zyd8/hash-transfer-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244937847,"owners_count":20535127,"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":["csharp","data-integrity","dotnet","hashing","python"],"created_at":"2024-11-28T20:07:49.162Z","updated_at":"2025-12-30T23:49:25.264Z","avatar_url":"https://github.com/Zyd8.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hash-transfer-cli\n\nhttps://github.com/user-attachments/assets/14047ebf-59a7-4a92-b824-3dc34d1b2e6e\n\nA **secure** command-line tool for copying and moving files securely between locations. This tool supports a variety of hash algorithms to ensure data integrity during the transfer process. \nAdditionally, it includes **safeguarding** measures to enhance the reliability of file transfers. It is compatible with both Linux and Windows.\n\n## What is hashing?\nHashing in simple words takes an input such as a file, then tries to return a unique output represented by a fixed string of characters. Let's say I create a  `my_file.txt`  file with its content being  `hello world` . If I feed it to a hash algorithm which is essentialy a mathematical formula like md5, it will output something like:  `6f5902ac237024bdd0c176cb93063dc4` . However, the moment I modify the content of that file to  `hello world.` , that very small change leads to a significantly different output:  `34521560c992eec462c9080dcf5b89e0` . Now, you might begin to see how big of a role hashing takes when it comes to data integrity.\n\n## Why do file hashing during transfer operations? \n- To primarly avoid corruption in general. The probability of a corruption happening during a day-to-day file transfer is very unlikely. However, it is always not zero.\n  - Handling of critical data. When it is absolutely necessary that a file must be identical to another, because one single flip of a bit could render a file unreadable or broken. (Especially for compressed or encrpyted data).\n  - Handling of massive amounts of data. If you're copying Terabytes of data to another location, it is very time-consuming to check each and every one of your ____ collection to see if it is not corrupted.\n  - Assurance. It is reassuring to see for yourself that data integrity measures are being actively done. (Especially for \"paranoids\" like me).\n\n# Installation (Windows and Linux)\n\n## GUI installation\nIn the [Release](https://github.com/Zyd8/hash-transfer-cli/releases) section, download the correct package according to your operating system.\n\n## CLI installation\nOpen the terminal or cmd and enter: \n\n```\n// for linux\nwget https://github.com/Zyd8/hash-transfer-cli/releases/download/v0.10-beta/hash-transfer-cli_linux-x64.tar.gz\n\n// for windows\ncurl -o https://github.com/Zyd8/hash-transfer-cli/releases/download/v0.10-beta/hash-transfer-cli_win-x64.zip\n```\n\n# Usage\n\n\u003e `\u003c Required \u003e` ` [ Optional ] `\n\n```\n\u003chash-transfer-cli\u003e \u003csource\u003e \u003cdestination\u003e [-m/--mode] [-h/--hash]\n```\n- hash-transfer-cli - the entry point of the application.\n- source - the file or directory you want to transfer.\n- destination - the directory you want the source to be inside of.\n- mode - the transfer modes.\n  - **copy (default)** - copies the file or directory from source to destination.\n  - cut - does the same thing as copy but the source file or source directory is deleted after hash matching is a success.\n- hash - the hash algorithms (sorted starting from the least secure to the most secure; starting from the fastest to lowest).\n  - crc32\n  - crc64\n  - **md5 (default)**\n  - sha1\n  - sha256\n  - sha512\n\n## For Windows\n\nLaunch cmd and `cd` your way into the repository folder where hash-transfer-cli.exe is located.\n\nRun the program via:\n  \n```\nhash-transfer-cli absolute:\\path\\to\\source absolute:\\path\\to\\destination\n```\n\n\u003e e.g. `hash-transfer-cli C:\\Users\\windows10\\Downloads\\my_file_or_directory C:\\Users\\windows10\\Documents -h crc32 -m copy`\n\nOr add the repo directory to PATH so that you can call the executable without being in the repository directory.\n\n```\nhash-transfer-cli absolute:\\path\\to\\source absolute:\\path\\to\\destination\n```\n\n## For Linux\n\nLaunch the terminal and `cd` your way into the repository folder where hash-transfer-cli is located.\n\nRun the program via:\n\n```\n./hash-transfer-cli /absolute/path/to/source /absolute/path/to/destination\n```\n\n\u003e e.g. `./hash-transfer-cli /home/user/Downloads/my_file_or_directory /home/user/Documents --hash sha512`\n\nOr, again, add the repo directory to PATH so that you can call the executable without being in the repository directory.\n\n\u003e If the terminal outputs `Permission Denied`, then you must enable \"Executable as Program\" in the properties of hash-transfer-cli.\n\n# Safeguards \n\n- When a certain file fails to match hashes, it will attempt to recopy from source until it matches.\n  \n- When selecting \"cut\" mode, it will not delete the source directory/file if one or more file fails hash matching.\n  \n- If the file/directory already exists in the destination, it will prompt the user for overwrite.\n  \n- When invoking SIGINT aka \"Ctrl + C\" during transfer, depending on the transfer status it will abruptly stop and stay at it is.\n  \n\u003e Important in the event of accidentally overwriting the destination.\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyd8%2Fhash-transfer-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzyd8%2Fhash-transfer-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzyd8%2Fhash-transfer-cli/lists"}