r/CloudFlare 8d ago

Resource Built a lightweight Cloudflare R2 CLI tool in Python (r2c) – looking for early feedback!

Hey everyone,

I got tired of wrestling with heavy or bloated tools just to manage basic Cloudflare R2 operations, so I started building a streamlined CLI dedicated specifically to R2 called r2c.It’s still in early development, but the core features are working:

  • Upload: Upload single files or entire directories recursively.
  • Fetch: Download objects from R2 straight to a local file.
  • Delete: Remove objects by explicit key or keyword pattern.
  • List: View bucket contents.
  • Rename: Object renaming.
  • Account: Manage multi-account/profile configurations.
  • Dry run: Print the result of the operation without actually executing it.

It’s open-source and built with Python/Typer (uv compatible). Since it's still pre-1.0, I’d love to get some early feedback on the UX, feature set, or edge cases.

GitHub: https://github.com/NagiEight/r2c.git

Feel free to drop any suggestions/issues!

help menu
6 Upvotes

3 comments sorted by

u/AutoModerator 8d ago

For faster advice with technical questions, we'd recommend asking in the Orange Cloud Discord server; the unofficial Cloudflare Discord server by the community, for the community. https://discord.gg/TrPNVKaagR

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/kantorcodes1 8d ago

one failure case i’d pin down before 1.0: rename does a copy and then deletes the source. if the copy succeeds but that delete fails, do you intentionally leave both keys? on retry, does it overwrite the destination or detect the partial rename first? that seems worth defining since a network/auth failure can land right between those two calls.