{"id":21840502,"url":"https://github.com/rubiojr/rclone-charmfs","last_synced_at":"2025-04-14T10:52:06.384Z","repository":{"id":66323330,"uuid":"488218237","full_name":"rubiojr/rclone-charmfs","owner":"rubiojr","description":"CharmFS backend for Rclone","archived":false,"fork":false,"pushed_at":"2022-05-03T17:45:03.000Z","size":28,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T00:05:38.311Z","etag":null,"topics":["charm","charmfs","rclone"],"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/rubiojr.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":"2022-05-03T13:19:33.000Z","updated_at":"2024-02-08T02:11:57.000Z","dependencies_parsed_at":"2023-03-13T20:29:57.484Z","dependency_job_id":null,"html_url":"https://github.com/rubiojr/rclone-charmfs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubiojr%2Frclone-charmfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubiojr%2Frclone-charmfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubiojr%2Frclone-charmfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubiojr%2Frclone-charmfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubiojr","download_url":"https://codeload.github.com/rubiojr/rclone-charmfs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248868841,"owners_count":21174754,"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":["charm","charmfs","rclone"],"created_at":"2024-11-27T21:26:31.430Z","updated_at":"2025-04-14T10:52:06.364Z","avatar_url":"https://github.com/rubiojr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rclone :heart: CharmFS\n\nA [rclone](https://github.com/rclone/rclone) CharmFS backend to manage your [Charm Cloud](https://charm.sh) files.\n\nThe backend is currently highly experimental, in a working prototype stage, very inefficient and with some functionality broken.\n\n**Don't use it with real/production data for now.**\n\n## Building\n\nInstall [Go](https://go.dev) and Run `make`.\n\nThis will clone the rclone repository, add the CharmFS backend code and build the `rclone-charm` binary.\n\n## Running\n\nNote that you'll need a working Charm account first, with ssh keys generated etc.\n\nConfigure the remote firt:\n\n```\nrclone-charm config create charmfs charm url=https://cloud.charm.sh\n```\n\nIf you want to use your own Charm server URL, it needs to be set using environment variables for now, as remote rclone config is currently ignored (not implemented):\n\n```\nexport CHARM_HOST=my.charm.host\n\nrclone-charm ls charmfs:\n```\n\n## Working commands\n\nFar from being bug free and efficient, may eat data.\n\n* cat\n* copy\n* delete\n* ls, lsd, lsf, lsjson, lsl\n* lsd\n* mount (partially, VFS caching doesn't work as expected, which means opening files with other programs will be broken)\n* tree\n\n## Unsupported commands\n\n* about (No quota support in CharmFS to my knowledge) \n* size (no way to get remote plaintext file size currently)\n* sha1sum (no way to get remote plaintext sha1sum currently)\n* touch (Change remote file mod time not currently supported by CharmFS to my knowledge)\n* selfupdate (the plan is to upstream the backend eventually)\n\n## Commands not working\n\n* mkdir (not sure yet if we can mkdir empty directories in Charm)\n* move (not implemented)\n* moveto (not implemented)\n* deletefile (buggy)\n\n## Commands not tested\n\nEverything else.\n\n## Planed\n\n* Custom config endpoint support (supported via CHARM_* env vars currently)\n* Unit tests\n* Replace Bash integration tests with Go test\n* Upstream submission\n\n## Gotchas\n\nCharmFS uses end-to-end encryption, which makes some Rclone file operations a bit more complicated or downright impossible. In particular, things like:\n\n* Getting the remote (plaintext) file size without downloading it first\n* Get the remote real file name\n* Checksumming local and remote files,\n* Comparing local and remote file sizes\n\nand other file operations where plaintext access by the server is required will probably be never supported, unless CharmFS gains access to some additional file metadata eventually.\n\nThis is a good thing in my book, but it'll have a (significant perhaps) performance impact and limit Rclone functionality when using a CharmFS remote.\n\n## Testing\n\nRun `make test`.\n\nThis will:\n\n* Clone the rclone repository\n* Add the CharmFS backend code\n* Build the rclone binary\n* Download a `charm` binary\n* Start a charm server locally\n* Run a few integration tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubiojr%2Frclone-charmfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frubiojr%2Frclone-charmfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frubiojr%2Frclone-charmfs/lists"}