{"id":41256573,"url":"https://github.com/0chain/rclone_zus","last_synced_at":"2026-01-23T01:51:56.966Z","repository":{"id":292917802,"uuid":"980142247","full_name":"0chain/rclone_zus","owner":"0chain","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-18T06:09:02.000Z","size":133,"stargazers_count":2,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-18T08:22:49.421Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0chain.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-08T16:23:18.000Z","updated_at":"2025-09-18T06:09:05.000Z","dependencies_parsed_at":"2025-05-12T20:46:57.242Z","dependency_job_id":"df588032-a0a3-4f3e-a139-16b283e1b53e","html_url":"https://github.com/0chain/rclone_zus","commit_stats":null,"previous_names":["0chain/rclone_zus"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/0chain/rclone_zus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0chain%2Frclone_zus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0chain%2Frclone_zus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0chain%2Frclone_zus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0chain%2Frclone_zus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0chain","download_url":"https://codeload.github.com/0chain/rclone_zus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0chain%2Frclone_zus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28677714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T01:00:35.747Z","status":"ssl_error","status_checked_at":"2026-01-23T01:00:19.529Z","response_time":144,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-23T01:51:56.443Z","updated_at":"2026-01-23T01:51:56.958Z","avatar_url":"https://github.com/0chain.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[\u003cimg src=\"https://rclone.org/img/logo_on_light__horizontal_color.svg\" width=\"50%\" alt=\"rclone logo\"\u003e](https://rclone.org/#gh-light-mode-only)\n[\u003cimg src=\"https://rclone.org/img/logo_on_dark__horizontal_color.svg\" width=\"50%\" alt=\"rclone logo\"\u003e](https://rclone.org/#gh-dark-mode-only)\n\n[rclone for Züs](#what-is-rclone_zus\n) |\n[Installation](#installation--setup) |\n[Website](https://rclone.org) |\n[Documentation](https://rclone.org/docs/) |\n[Download](https://rclone.org/downloads/) |\n[Contributing](CONTRIBUTING.md) |\n[Changelog](https://rclone.org/changelog/) |\n[Forum](https://forum.rclone.org/)\n\n## Züs Overview \n\n[Zus](https://zus.network/) is a blockchain-based, S3-compatible, breachproof, \u0026 privacy-first storage platform that’s fast, secure, and ACID-compliant operating on a zero-trust network.\nOur goal is to deliver 10x value to customers through:\n\n- 5x better performance due to parallel paths, limited only by the client bandwidth\n- 2x lower costs, thanks to zero egress and API fees (for non-cloud deployments), and no additional security and compute costs.\n- 2x lower carbon footprint, enabled by our erasure-coded architecture\n- Breachproof security with split-key, zero-knowledge, and erasure coded data\n- 100% dynamic availability, with ability to add or replace servers on the fly\n- Vendor neutrality, with no lock-in or dependency on a single storage provider\n- One of our customers benchmarked our platform against AWS on [s3compare.io](https://s3compare.io) showing our performance advantages.\n\n### Core Features – Züs vs AWS S3 vs MinIO\n\n| **Feature**                              | **AWS S3**                                          | **MinIO**                                      | **Züs**                                                                                   |\n| ---------------------------------------- | --------------------------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------- |\n| **Managed Infrastructure**               | Fully managed              | Self-hosted; requires manual setup and scaling | Self-hosted or Fully managed                           |\n| **Split-key Internal Breach Security**   | Not available; single-party access control          | Not available                                  | Built-in split-key security prevents internal breaches with decentralized key control      |\n| **Zero Egress Fees**                     | Charges apply for all outbound data                 | No egress fees                                 | No egress fees                                        |\n| **Zero API Fees**                        | Charges per API call                                | Free API requests                                | Free API requests                               |\n| **Encrypted Data Sharing**               | Requires external tools or complex configuration    | Not supported natively                         | Native proxy re-encryption enables secure, private sharing of encrypted files \u0026 folders to anyone             |\n| **Zero Trust Network**               | Not supported                                       | Not supported                                  | Zero-trust architecture ensures client with real identity on the blockchain sign for write or read operations |\n| **ACID Compliant (Data Integrity)**      | Not ACID compliant            | Not ACID compliant                    | Fully ACID compliant for real time query and processing    |\n| **Add/Swap Servers/Providers (No Lock-in, achieve 100% Dynamic Availability)** | No real-time server switching | Tied to fixed infrastructure                   | Add, remove, or swap servers or storage providers dynamically with no lock-in to achieve 100% dynamic availability                        |\n\n## What is rclone_zus?\n\n**rclone_zus** is a custom backend for [rclone](https://rclone.org/) that connects directly to the Züs decentralized cloud. It lets you use familiar rclone commands—copy, sync, move, ls—to manage your files on Züs.\n\nWith rclone_zus, you can:\n\n- Run efficient server-side operations (copy, move, delete)\n\n- Automate uploads/downloads in scripts and CI/CD pipelines\n\n- Use Züs as an S3-compatible remote without vendor lock-in\n\n- Organize data across multiple allocations and Rooms via [Blimp UI](https://blimp.network)\n\n- Share both public and encrypted files instantly\n\n\u003cp align=\"center\"\u003e\n \u003cimg width=\"500\" alt=\"rclone_zus architecture\" src=\"https://github.com/user-attachments/assets/b2226c25-91cb-4ae2-bbd9-bd0f06a262ec\" /\u003e\n\u003c/p\u003e\n\n###  Why use rclone_zus?\n\n- Automation Ready – ideal for scripting and DevOps\n\n- Privacy by Design – encrypted, zero-trust storage on Züs\n\n- Fast \u0026 Efficient – batch sync avoids redundant uploads\n\n- Scalable – manage multiple allocations through Blimp\n\n## Configuration\n\n\u003cp align=\"center\"\u003e\n  Click the image below to watch the step-by-step guide  \n  \u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"https://youtu.be/AJ-zgmhSgGE\"\u003e\n    \u003cimg src=\"https://img.youtube.com/vi/AJ-zgmhSgGE/0.jpg\" alt=\"How-to Video\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### Prerequisites\n\nBefore using `rclone_zus`, you must have a wallet, allocation, and configuration files in place.\n\n### 1. Download Wallet via Blimp (Recommended Method)\n\nThe standard way to configure your Züs wallet is by downloading it through the **Blimp** or **Vult** user interfaces. This requires no command-line setup and ensures all required files are prepared for you.\n\n#### Downloading from Blimp\n\n1. Visit [**Blimp**](https://blimp.zus.network)\n2. Navigate to **Manage Allocation**\n3. Select your allocation\n4. Click the **ellipsis (⋯)** button\n5. Choose **“Download Wallet”**\n6. Enter your **mnemonic** or **wallet password**\n7. You’ll receive a `.zip` file containing:\n   - `wallet.json` – Your Züs wallet credentials\n   - `allocation.txt` – The Allocation ID\n   - `config.yaml` – Züs network configuration (block worker, signature scheme, etc.)\n\u003e Make sure your wallet.json's \"is_split\" parameter is set to false\n\n#### Move Files to Config Directory\n\nExtract the ZIP and move **all three files** to your system’s default config folder:\n\n- **Windows**:  \n  `C:\\Users\\\u003cyour-username\u003e\\.zcn`\n\n- **Linux/macOS**:  \n  `~/.zcn/`\n\n\u003e If the `.zcn` folder does not exist, create it manually.\n\n#### Working with Multiple Allocations\nIf want to continue using .zcn as your config directory, ensure that:\n\n- You replace `wallet.json` with the version linked to the correct wallet\n- You replace `allocation.txt` with the matching allocation ID\n- You can reuse `config.yaml` as long as it points to the same Züs network (e.g. mainnet)\n\n\u003e If do not want to overwrite your files, you could create a custom config directory.\n\u003e Then, use `rclone config` to point to this directory.\n\n### Allocation Performance\n\n**For reliable performance:**\n- Use Züs blobbers usually provide better stability and performance\n\n### 2. Alternate Setup (CLI Method)\n\nAlternatively, you can create your wallet and allocation using the [Züs CLI tools](https://docs.zus.network/zus-docs/clis)\n\n\u003e ⚠Ensure the CLI-generated wallet matches the allocation you're trying to access.\n\u003e This method is more error-prone for beginners and should only be used if you're familiar with the Züs CLI ecosystem.\n\n## Installation \u0026 Setup\nThere are two ways of installing the rclone_zus plugin: download a pre-built binary or build the binary.\n\n### Download pre-built binary\n\n1. Go to the [releases page](https://github.com/0chain/rclone_zus/releases/tag/v1.0.4) and download the pre-built binary for your OS.\n2. Place `rclone.exe` in your desired directory\n3. Run `./rclone`in that directory. If it shows the help description, you're ready to start using rclone with Züs storage\n\n\u003e This is the preferred method for Windows users\n\n### Build the Binary\n\nThis section guides you through cloning, building, and configuring rclone_zus with the Züs backend. Ideal for Linux and MacOS.\n\n#### 1. Clone the Repository\n\n    git clone https://github.com/0chain/rclone_zus.git\n    cd rclone_zus\n\n#### 2. Build the rclone Binary\n\nUse the provided Makefile to build the project:\n\n    make\n\nThis will compile the rclone binary into the project root (./rclone), including the Züs backend.\n\n💡 Troubleshooting: If make fails (e.g., missing make command or incompatible system), you can build manually:\n\n    go build -o rclone ./rclone.go\n\nEnsure you have Go ≥1.20 installed (suggested go 1.23.4)and your GOPATH properly configured.\n\nThis will build a local ./rclone binary with the Züs backend integrated.\n\nNote: If you're modifying backend code (e.g. backend/zus/zus.go), you can recompile by running the go build command again.\n\n#### 3. (Optional) Install as Global Command rclone_zus\n\nTo use your custom Rclone binary without the ./ prefix, install it globally by copying it to a directory in your system's $PATH, such as /usr/local/bin:\n\n    sudo cp ./rclone /usr/local/bin/rclone_zus\n\nAfter this, you can run it from anywhere as a normal command:\n\n    rclone_zus move TestZus:/source TestZus:/dest\n\n📌 Why rename it?\n\nRenaming it to rclone_zus helps avoid conflicts with the system-installed rclone, if present.\n\n\n**Remote Cofiguration**\n\nHere is an example of how to make a `zus` remote called `myZus`.\n\nFirst run\n\n    rclone config\n\nThis will guide you through an interactive setup process:\n\n```\nNo remotes found, make a new one?\nn) New remote\ns) Set configuration password\nq) Quit config\nn/s/q\u003e n\nname\u003e myZus\nType of storage to configure.\nEnter a string value. Press Enter for the default (\"\").\nChoose a number from below, or type in your own value\n...\n59 / Zus Decentralized Storage\n   \\ \"zus\"\n...\nStorage\u003e zus\nZus Allocation ID - allocation ID.\nallocation_id\u003e\nConfig Directory - directory to read config files (defaults to ~/.zcn; make sure to use the correct windows path for  `C:\\Users\\Username\\.zcn`).\nconfig_dir\u003e\nWork Directory - directory to read/write files.\nwork_dir\u003e\nEncrypt - encrypt the data before uploading.\ny) Yes\nn) No (default)\ny/n\u003e n\nEdit advanced config?\ny) Yes\nn) No (default)\ny/n\u003e n\nConfiguration complete.\nOptions:\n- type: zus\n- allocation_id: allocation_id\nKeep this \"myZus\" remote?\ny) Yes this is OK (default)\ne) Edit this remote\nd) Delete this remote\ny/e/d\u003e y\n```\nMake sure your **rclone.conf** file is created.\n**Finding rclone.conf:**\n- To locate your rclone configuration file (`rclone.conf`) via command line, use the command `rclone config file`\n\nExample rclone.conf :\n```ini\n[myZus]\ntype = zus\nallocation_id = \u003callocation_id\u003e\n```\n\nOnce configured you can then use `rclone` like this,\n\nSee top level directories\n\n    rclone lsd \u003cremote name\u003e:\u003cabsolute path\u003e\n\nExample to list all the files and directories inside the root directory of the remote \"myZus\"\n\n    rclone lsd myZus:/\n\nOutput example:\n\n```\n    -1 2025-05-14 15:27:59        -1 Encrypted\n    -1 2025-07-12 17:25:15        -1 10MbFiles100\n    -1 2025-07-12 17:44:35        -1 10MbFiles100M\n    -1 2025-07-12 17:46:51        -1 project-zus\n    -1 2025-07-14 22:45:57        -1 10MbFiles50\n```\n\n**Make a new directory** \n\n    rclone mkdir myZus:\u003cpath\u003e/\u003cnew_directory_name\u003e\n\nExample: create new direcotry in the root (This example shows new directory name as \"newDirectory\")\n\n    rclone mkdir myZus:/newDirectory\n\n**List** the contents of a directory\n\n    rclone ls myZus:/\u003cdirectory_path\u003e\n\n**Copy** from source to destination `(Local to Remote, Remote to Remote, Remote to Local)`\n\n    `rclone copy \u003csource_remote\u003e:\u003csource_path\u003e \u003ctarget_remote\u003e:\u003ctarget_path\u003e` \n    \n- **Note**: Copy/move/sync commands only work within the same remote (same allocation). You cannot copy/move/sync across two different remotes (different allocations). \n\n**Local to Züs Examples:**\n```bash\n# Windows example - copying from local Windows path to Züs remote\nrclone copy \"C:\\Users\\\u003cusername\u003e\\OneDrive\\Desktop\\New folder\" myZus:/testDirectory\n\n# Linux/macOS example - copying from local Unix path to Züs remote  \nrclone copy /home/user/documents myZus:/backup\n```\n\n**Züs to Local Examples:**\n```bash\n# Copying from Züs remote to local directory\nrclone copy myZus:/documents /home/user/downloads\n```\n\n**Cross-Cloud Backup Examples (Google Drive ↔ Züs):**\n```bash\n# Google Drive to Züs backup (source: gdrive, target: myZus)\nrclone copy gdrive:important-files myZus:/backup\n\n# Züs to Google Drive backup (source: myZus, target: gdrive)\nrclone copy myZus:/documents gdrive:zus-backup\n```\n\n**Same Remote Operations (within same allocation):**\n```bash\n# Copying within the same Züs remote (source: myZus, target: myZus)\nrclone copy myZus:/sourcefilesDir/ myZus:/destinationDir/\n```\n\n\n**Move** from source to destination `(Local to Remote, Remote to Remote, Remote to Local)`\n\n    `rclone move \u003csource_remote\u003e:\u003csource_path\u003e \u003ctarget_remote\u003e:\u003ctarget_path\u003e` \n    \n- **Cross-Remote Limitation**: Same limitation as copy - only works within the same remote/allocation\n\n**Local to Züs Examples:**\n```bash\n# Windows example - moving from local Windows path to Züs remote\nrclone move \"C:\\Users\\\u003cusername\u003e\\Desktop\\New folder\" myZus:/testDirectory\n\n# Linux/macOS example - moving from local Unix path to Züs remote\nrclone move /home/user/documents myZus:/backup\n```\n\n**Züs to Local Examples:**\n```bash\n# Moving from Züs remote to local directory\nrclone move myZus:/documents /home/user/downloads\n```\n\n**Cross-Cloud Examples (Google Drive ↔ Züs):**\n```bash\n# Google Drive to Züs (source remote: gdrive, target remote: myZus)\nrclone move gdrive:important-files myZus:/backup\n\n# Züs to Google Drive (source remote: myZus, target remote: gdrive)\nrclone move myZus:/documents gdrive:zus-backup\n```\n\n**Same Remote Operations (within same allocation):**\n```bash\n# Moving within the same Züs remote (source remote: myZus, target remote: myZus)\nrclone move myZus:/sourcefilesDir/ myZus:/destinationDir/\n```\n\nSync `/home/local/directory` to the remote path, deleting any\nexcess files in the path.\n\n    rclone sync --interactive /home/local/directory myZus:directory\n\nYou can also check your allocation in the Blimp and Vult UI. Files should be in a folder named \"directory\".\n\n\n## Sync Mode Configuration\n### Use sync mode in rclone_zus for bulk operations\n\nuse `--transfers=number of operations | --transfers=50` with the commands.\n\n```\nEdit advanced config?\ny) Yes\nn) No (default)\ny/n\u003e y\n\nOption sdk_log_level.\nLog level for the SDK\nEnter a signed integer. Press Enter for the default (0).\nsdk_log_level\u003e leave empty\n\nOption batch_mode.\nUpload file batching sync|async|off.\nThis sets the batch mode used by rclone.\nThis has 3 possible values\n- off - no batching\n- sync - batch uploads and check completion (default)\n- async - batch upload and don't check completion\nRclone will close any outstanding batches when it exits which may make\na delay on quit.\nEnter a value of type string. Press Enter for the default (sync).\nbatch_mode\u003e leave empty\n\nOption batch_size.\nMax number of files in upload batch.\nThis sets the batch size of files to upload. It has to be less than 50.\nBy default this is 0 which means rclone will calculate the batch size\ndepending on the setting of batch_mode.\n- batch_mode: async - default batch_size is 100\n- batch_mode: sync - default batch_size is the same as --transfers\n- batch_mode: off - not in use\nRclone will close any outstanding batches when it exits which may make\na delay on quit.\nSetting this is a great idea if you are uploading lots of small files\nas it will make them a lot quicker. You can use --transfers 32 to\nmaximise throughput.\nEnter a signed integer. Press Enter for the default (0).\nbatch_size\u003e 50\n\nOption batch_timeout.\nMax time to allow an idle upload batch before uploading.\nIf an upload batch is idle for more than this long then it will be\nuploaded.\nThe default for this is 0 which means rclone will choose a sensible\ndefault based on the batch_mode in use.\n- batch_mode: async - default batch_timeout is 5s\n- batch_mode: sync - default batch_timeout is 500ms\n- batch_mode: off - not in use\nEnter a duration s,m,h,d,w,M,y. Press Enter for the default (0s).\nbatch_timeout\u003e leave empty\n\nOption batch_commit_timeout.\nMax time to wait for a batch to finish committing\nEnter a duration s,m,h,d,w,M,y. Press Enter for the default (10m0s).\nbatch_commit_timeout\u003e leave empty\n\nOption description.\nDescription of the remote.\nEnter a value. Press Enter to leave empty.\ndescription\u003e leave empty\n\nEdit advanced config?\ny) Yes\nn) No (default)\ny/n\u003e n\n\nConfiguration complete.\n```\n\n\n**Copy** from source to destination `(Local to Remote, Remote to Remote, Remote to Local)`\n\n    rclone copy \u003cremote name\u003e:\u003csource path\u003e \u003cremote name\u003e:\u003cdestination path\u003e  --transfers=50\n\n**Move** from source to destination `(Local to Remote, Remote to Remote, Remote to Local)`\n\n    rclone move \u003cremote name\u003e:\u003csource path\u003e \u003cremote name\u003e:\u003cdestination path\u003e  --transfers=50\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0chain%2Frclone_zus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0chain%2Frclone_zus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0chain%2Frclone_zus/lists"}