gitmyhub

goofys

Go ★ 5.6k updated 2y ago

a high-performance, POSIX-ish Amazon S3 file system written in Go

A tool that mounts Amazon S3 (and compatible cloud storage like DigitalOcean Spaces or Google Cloud Storage) as a regular folder on your Linux or macOS computer, optimized for speed over full file system compatibility.

GoFUSEsetup: moderatecomplexity 3/5

Goofys lets you attach an Amazon S3 bucket to your computer so that it appears as a regular folder. S3 is Amazon's cloud storage service, and normally you interact with it through APIs or dedicated tools. Goofys uses a technology called FUSE to make S3 behave like a local drive, so you can navigate it with a file browser, copy files to it, or read from it the same way you would with a folder on your hard drive.

The project describes itself as a "Filey System" rather than a file system because it trades full compatibility for speed. Standard file systems support features like random writes at any position in a file, fine-grained permissions, symbolic links, and renaming large folders. Goofys does not support all of those, because supporting them over S3 would require extra round trips to the cloud and slow things down. It only supports writing files sequentially, does not track file ownership or permissions in the usual way, and does not support symbolic links or hard links.

Beyond Amazon S3, Goofys also works with several other cloud storage providers that implement a compatible API, including Ceph-based services like DigitalOcean Spaces, Google Cloud Storage, Wasabi, and Scaleway. It additionally supports Microsoft Azure Blob Storage and Azure Data Lake through a separate configuration described in a companion readme.

Installation is available as a pre-built binary for Linux, through Homebrew for macOS, or by building from source using the Go programming language. Credentials for your cloud storage account are read from standard AWS credential files or environment variables. The project is open source under the Apache License 2.0.

Where it fits