{"id":15484917,"url":"https://github.com/codenoid/gstransfer","last_synced_at":"2025-07-26T02:09:49.328Z","repository":{"id":100300864,"uuid":"282398586","full_name":"codenoid/gstransfer","owner":"codenoid","description":"Google Cloud Storage upload relay/gateway with destination path rewrite support \u0026 zero disk allocation ⚡","archived":false,"fork":false,"pushed_at":"2020-08-17T13:10:01.000Z","size":27,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-24T07:37:42.394Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codenoid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-07-25T07:58:37.000Z","updated_at":"2022-05-31T02:05:07.000Z","dependencies_parsed_at":"2023-05-13T14:15:09.059Z","dependency_job_id":null,"html_url":"https://github.com/codenoid/gstransfer","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenoid%2Fgstransfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenoid%2Fgstransfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenoid%2Fgstransfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codenoid%2Fgstransfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codenoid","download_url":"https://codeload.github.com/codenoid/gstransfer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241768277,"owners_count":20017116,"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-10-02T06:00:31.772Z","updated_at":"2025-03-04T01:31:40.711Z","avatar_url":"https://github.com/codenoid.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gstransfer [WIP]\n\nGoogle Cloud Storage upload relay/gateway with destination path rewrite support \u0026 zero disk allocation, **unstable** version.\n\n## Installation\n\nCurrently we only provide .deb package, [get it here](https://github.com/codenoid/gstransfer/releases), or [Build from source](#building-from-source)\n\n## Usage\n\nthere is two part of gstransfer, server and client/uploader\n\n```bash\ndefine -bind flag if you want to use server mode\nUsage of ./gstransfer:\n  -bind string\n    \tset gstransfer bind ip and port\n  -bucket string\n    \tyour bucket name\n  -db-path string\n    \tfull path to database folder, will automatically craete if not exist (default \"/tmp/gstransfer\")\n  -dst-rule string\n    \tdir-0 is root of chosen directory, and so on, and 'filename' is your file original filename, you can add custom prefix (default \"dir-0/../filename\")\n  -id string\n    \tdefine process id, this will enable re-upload without duplicate file on app crash\n  -max-size int\n    \tsize in MB (default 100)\n  -server string\n    \tyour server url\n  -source string\n    \tfull path to your source directory\n```\n\n### Server\n\nFor server, make sure you had access to bucket target, define GOOGLE_APPLICATION_CREDENTIALS env var with path to .json auth file, for more, read [Getting started with authentication](https://cloud.google.com/docs/authentication/getting-started)\n\n```bash\n$ # start gstransfer server\n$ gstransfer -bind 0.0.0.0:3000 -max-size 150\n```\n\n### Client/Uploader\n\n```bash\n$ ./gstransfer -source /full/path/to/dir -bucket name -server http://gstorage-server:8003 -id test-1 -dst-rule dir-0/../file\n```\n\n**-dst-rule explanation**\n\nfor example you have this full path, `/home/codenoid/Documents/codenoid/gstransfer/` with file located in `/home/codenoid/Documents/codenoid/gstransfer/.git/hooks/post-update.sample`, let's note the **`.git/hooks/post-update.sample`**\n\n1. `-dst-rule dir-0/file` become `.git/post-update.sample` object\n2. `-dst-rule dir-0/../file` become `.git/hooks/post-update.sample` object\n3. `-dst-rule dir-1/../file` become `hooks/post-update.sample` object\n4. `-dst-rule dir-4/../file` become error, because current listed file not match with the rule\n5. `-dst-rule file` become `post-update.sample` object\n\n## Building from source\n\nYou need to install Go, for linux, [read here](https://codenoid.github.io/posts/cara-install-golang-di-linux/)\n\n```bash\ngit clone https://github.com/codenoid/gstransfer.git\ncd gstransfer\ngo build -trimpath\n```\n\n## FAQ\n\nQ: What if the app crash/exit in the middle progress ?\n\u003e don't worry, just define your existing -id, for recovering from server-crash put `-db-path` anywhere besides `/tmp`\n\nQ: What good server spec for the server mode ?\n\u003e most of my file are lower than 50MB, i can just go with GCP `f1-micro`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenoid%2Fgstransfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodenoid%2Fgstransfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodenoid%2Fgstransfer/lists"}