{"id":13581312,"url":"https://github.com/Seagate/cloudfuse","last_synced_at":"2025-04-06T07:31:56.141Z","repository":{"id":200841983,"uuid":"688592857","full_name":"Seagate/cloudfuse","owner":"Seagate","description":"Cloudfuse is a FUSE filesystem for S3 and Azure storage","archived":false,"fork":false,"pushed_at":"2025-04-03T19:25:57.000Z","size":111682,"stargazers_count":29,"open_issues_count":11,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-03T20:29:45.251Z","etag":null,"topics":["azure-storage","cloud","filesystem","fuse","go","s3"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seagate.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-07T17:10:18.000Z","updated_at":"2025-04-01T22:36:34.000Z","dependencies_parsed_at":"2024-01-30T00:24:58.364Z","dependency_job_id":"fbd3f6b7-7cde-4830-b3c2-359aa25258b9","html_url":"https://github.com/Seagate/cloudfuse","commit_stats":null,"previous_names":["seagate/cloudfuse"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2Fcloudfuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2Fcloudfuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2Fcloudfuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seagate%2Fcloudfuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seagate","download_url":"https://codeload.github.com/Seagate/cloudfuse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247450120,"owners_count":20940858,"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":["azure-storage","cloud","filesystem","fuse","go","s3"],"created_at":"2024-08-01T15:02:00.208Z","updated_at":"2025-04-06T07:31:56.135Z","avatar_url":"https://github.com/Seagate.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\n# Cloudfuse - An S3 and Azure Storage FUSE driver\n\nCloudfuse provides the ability to mount a cloud bucket in your local filesystem on Linux and Windows with a GUI for easy configuration.\nWith Cloudfuse you can easily read and write to the cloud, and connect programs on your computer to the cloud even if they're not cloud-aware.\nCloudfuse uses file caching to provide the performance of local storage, or you can use streaming mode to efficiently access small parts of large files (e.g. video playback).\nCloudfuse is a fork of [blobfuse2](https://github.com/Azure/azure-storage-fuse), and adds S3 support, a GUI, and Windows support.\nCloudfuse supports clouds with an S3 or Azure interface.\n\n## Table of Contents\n\n- [Installation](#installation)\n  - [Windows](#windows)\n  - [Linux](#linux)\n  - [From Archive](#from-archive)\n  - [From Source](#from-source)\n- [Basic Use](#basic-use)\n- [Health Monitor](#health-monitor)\n- [Command Line Interface](#command-line-interface)\n- [Limitations](#limitations)\n- [License](#license)\n- [Support](#support)\n- [Contributing](#contributing)\n\n## Installation\n\nCloudfuse includes two types of installers. The default \"cloudfuse\" and the \"cloudfuse_no_gui\" option. The \"no_gui\" option includes only the cloudfuse CLI tool and will not install the GUI and on Windows it will additionally not install the startup tool which automatically restarts existing mounts on reboot. The \"no_gui\" installer is significantly smaller and suitable for those who only want the CLI tool. Most users should pick the default \"cloudfuse\" installer.\n\n### Windows\n\nDownload and run the .exe installer from our latest release [here](https://github.com/Seagate/cloudfuse/releases). Uncheck the \"Launch Cloudfuse\" upon finishing the installation. Run the GUI separately as admin after the install completes.\n\n### Linux\n\n#### Debian /Ubuntu\n\nDownload the .deb file from our latest release [here](https://github.com/Seagate/cloudfuse/releases) and run the following command in your terminal:\n\n`sudo apt-get install ./cloudfuse*.deb`\n\n#### CentOS / RHEL\n\nDownload the .rpm file from our latest release [here](https://github.com/Seagate/cloudfuse/releases) and run the following command in your terminal:\n\n`sudo rpm -i ./cloudfuse*.rpm`\n\n#### Enable Running With Systemd\n\nTo enable Cloudfuse to run using systemd, see [Setup for systemd instructions](setup/readme.md)\n\n### From Archive\n\nDownload the archive for your platform and architecture from the latest release [here](https://github.com/Seagate/cloudfuse/releases).\nThe archive includes the GUI.\nOn Windows, you will need to install WinFsp to use Cloudfuse. See [this](https://winfsp.dev/rel/) to install WinFSP.\n\n### From Source\n\nPlease refer to the [Installation from source](https://github.com/Seagate/cloudfuse/wiki/Installation-From-Source) to\nmanually install Cloudfuse.\n\n## Basic Use\n\nThe quickest way to get started with Cloudfuse is to use the GUI. Open Cloudfuse from the desktop shortcut to launch it.\nIf you installed Cloudfuse from an archive, run `cloudfuseGUI` from the extracted archive.\nTo run the GUI from source, see instructions [here](https://github.com/Seagate/cloudfuse/wiki/Running-the-GUI-from-source).\n\n- Choose mount settings:\n  - Select the desired type of cloud (Azure or S3).\n  - Click `config` to open the settings window.\n  - Enter the credentials for your cloud storage container.\n  (see [here for S3](https://github.com/Seagate/cloudfuse/wiki/S3-Storage-Configuration), or [here for Azure](https://github.com/Seagate/cloudfuse/wiki/Azure-Storage-Configuration) credential requirements).\n  - Select file caching or streaming mode (see [File-Cache](https://github.com/Seagate/cloudfuse/wiki/File-Cache) and [Streaming](https://github.com/Seagate/cloudfuse/wiki/Streaming) for details).\n  - Close the settings window and save your changes.\n\n  The config file is written to this location on Windows: `C:\\Users\\{username}\\AppData\\Roaming`, and on Linux: `/opt/cloudfuse/`.\n  You can view and edit the config file directly (see [guide](https://github.com/Seagate/cloudfuse/wiki/Config-File)).\n- Mount your container:\n  - Click `Browse` in the main window and browse to the EMPTY folder you want to mount your container in. You may need to create this folder.\n  - Click `Mount`.\n  - Watch for status messages below. On success, your files will appear in the mount directory.\n    Note: if mount fails with an error mentioning WinFSP, you may need to install WinFSP (see [installation instructions](#installation)).\n\n  On Windows, mounted containers will persist across system restarts.\n\n- Unmount:\n  - Make sure the mount directory you want to unmount is listed. If it isn't, click `browse` and select it.\n  - Click the `unmount` mutton.\n  - Watch for a status message below. On success, the mount directory will become empty.\n    Note: If you enabled the `Persist File Cache` option, the local file cache for the container will be kept and reused when the container is mounted again.\n\nYou can also use the [command line interface](#command-line-interface) to mount and unmount.\n\n## Health Monitor\n\nCloudfuse also supports a health monitor.\nThe health monitor allows customers gain more insight into how their Cloudfuse instance is behaving with the rest of their machine.\nVisit [here](https://github.com/Seagate/cloudfuse/wiki/Health-Monitor) to set it up.\n\n## Command Line Interface\n\nThe general format of the Cloudfuse Linux commands is:\n\n`cloudfuse [command] [arguments] --[flag-name]=[flag-value]`\n\nAvailable commands:\n\n- `help [command]` - Displays general help, or help for the specified command\n- `mount` - Mounts a cloud storage container as a filesystem\n  Example: `cloudfuse mount \u003cmount path\u003e --config-file=\u003cconfig file\u003e`\n  Supported container types:\n  - [S3 Bucket Storage](https://aws.amazon.com/s3/)\n  - [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)\n  - [Azure Datalake Storage Gen2](https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction)\n- `mount all` - Mounts all the containers in an S3 Account or Azure account supported by mount\n  Example: `cloudfuse mount all \u003cmount path\u003e --config-file=\u003cconfig file\u003e`\n  On Windows, mounted containers will be remounted on login after a restart.\n- `mount list` - Lists all Cloudfuse filesystems\n  Example: `cloudfuse mount list`\n- `unmount` - Unmounts the Cloudfuse filesystem\n  Add `--lazy` (or `-z`) flag to use lazy unmount (prevents busy errors).\n  Example: `cloudfuse unmount --lazy \u003cmount path\u003e`\n  On Windows, unmounting a container also stops it from being automatically remounted at login.\n- `unmount all` - Unmounts all Cloudfuse filesystems\n  Add `--lazy` (or `-z`) flag to use lazy unmount (prevents busy errors) - Linux only.\n  Example: `cloudfuse unmount all --lazy`\n\n### Remount on Startup (Windows Only)\n\n- `cloudfuse service install` - Installs the startup process for Cloudfuse which remounts containers on login after a restart.\n- `cloudfuse service uninstall` - Uninstalls the startup process for Cloudfuse and prevents containers from being remounted on login.\n\n### Secure Options\n\nTo use security options the general format for cloudfuse commands is:\n\n`cloudfuse [command] [arguments] --[flag-name]=[flag-value]`\n\n- `secure decrypt` - Decrypts a config file\n- `secure encrypt` - Encrypts a config file\n- `secure get` - Gets value of a config parameter from an encrypted config file\n- `secure set` - Updates value of a config parameter\n\n### Find help from your command prompt\n\nTo see a list of commands, type `cloudfuse -h`.\nTo learn about a specific command, just include the name of the command (For example: `cloudfuse mount -h`).\n\n## Limitations\n\n### NOTICE\n\n- We have seen some customer issues around files getting corrupted when `streaming` is used in write mode.\nKindly avoid using this feature for write while we investigate and resolve it.\n\n### Un-Supported File system operations\n\n- mkfifo : fifo creation is not supported by cloudfuse and this will result in\n  \"function not implemented\" error\n- chown  : Change of ownership is not supported by Azure Storage hence Cloudfuse\n  does not support this.\n- Creation of device files or pipes is not supported by Cloudfuse.\n- Cloudfuse does not support extended-attributes (x-attrs) operations\n- Cloudfuse does not support lseek() operation on directory handles.\n  No error is thrown but it will not work as expected.\n\n### Un-Supported Scenarios\n\n- Cloudfuse does not support overlapping mount paths. While running multiple\n  instances of Cloudfuse make sure each instance has a unique and\n  non-overlapping mount point.\n- Cloudfuse does not support co-existence with NFS on same mount path. Behavior\n  in this case is undefined.\n- For Azure block blob accounts, where data is uploaded through other means,\n  Cloudfuse expects special directory marker files to exist in container. In\n  absence of this few file operations might not work. For e.g. if you have a\n  blob 'A/B/c.txt' then special marker files shall exists for 'A' and 'A/B',\n  otherwise opening of 'A/B/c.txt' will fail. Once a 'ls' operation is done on\n  these directories 'A' and 'A/B' you will be able to open 'A/B/c.txt' as well.\n  Possible workaround to resolve this from your container is to either\n\n  create the directory marker files manually through portal or run 'mkdir'\n  command for 'A' and 'A/B' from cloudfuse. Refer\n  [here](https://github.com/Azure/azure-storage-fuse/issues/866) for details on\n  this.\n\n### Other Limitations\n\n- In case of Azure BlockBlob accounts, ACLs are not supported by Azure Storage\n  so Cloudfuse will by default return success for 'chmod' operation. However it\n  will work fine for Gen2 (DataLake) accounts. ACLs are not currently supported\n  for S3 accounts.\n- When Cloudfuse is mounted on a docker container, SYS_ADMIN privileges are required\n  for it to interact with the fuse driver. If container is created without the\n  privilege, mount will fail. Sample command to spawn a docker container is\n\n    `docker run -it --rm --cap-add=SYS_ADMIN --device=/dev/fuse --security-opt\n    apparmor:unconfined \u003cenvironment variables\u003e \u003cdocker image\u003e`\n\n### Syslog security warning\n\nBy default, Cloudfuse will log to syslog. The default settings will, in some\ncases, log relevant file paths to syslog. If this is sensitive information, turn\noff logging or set log-level to LOG_ERR.\n\n## License\n\nThe Cloudfuse project is licensed under MIT.\n\n### Third-Party Notices\n\nSee [notices](./NOTICE) for third party license notices.\n\nQt is licensed under the GNU Lesser General Public License version 3, which is available [here](https://doc.qt.io/qt-6/lgpl.html).\n\nWinFSP is licensed under the GPLv3 license with a special exception for Free/Libre and Open Source Software,\nwhich is available [here](https://github.com/winfsp/winfsp/blob/master/License.txt).\n\n### Attribution\n\nWinFsp - Windows File System Proxy, Copyright (C) Bill Zissimopoulos - [link](https://github.com/winfsp/winfsp)\n\n## Support\n\n### Contact Us\n\nWe welcome your questions and feedback!\nEmail us: [cloudfuse@seagate.com](mailto:cloudfuse@seagate.com).\n\n### Frequently Asked Questions\n\nA list of FAQs can be found [here](https://github.com/Seagate/cloudfuse/wiki/Frequently-Asked-Questions).\n\n### Report Issues and Request Features\n\nPlease submit [issues and requests here](https://github.com/Seagate/cloudfuse/issues).\n\n## Contributing\n\nThis project welcomes contributions and suggestions.\n\nThis project is governed by the [code of conduct](CODE_OF_CONDUCT.md).\nYou are expected to follow this as you contribute to the project.\nPlease report all unacceptable behavior to [opensource@seagate.com](mailto:opensource@seagate.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeagate%2Fcloudfuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSeagate%2Fcloudfuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSeagate%2Fcloudfuse/lists"}