All Projects → kahing → Goofys

kahing / Goofys

Licence: apache-2.0
a high-performance, POSIX-ish Amazon S3 file system written in Go

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Goofys

S3fs Fuse
FUSE-based file system backed by Amazon S3
Stars: ✭ 5,733 (+45.8%)
Mutual labels:  s3, aws-s3, cloud-storage, fuse, fuse-filesystem, filesystem
Rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files
Stars: ✭ 30,541 (+676.73%)
Mutual labels:  s3, cloud-storage, google-cloud-storage, fuse-filesystem, openstack-swift, azure-blob
fusell-seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 13 (-99.67%)
Mutual labels:  fuse, filesystem, posix, fuse-filesystem
BlobHelper
BlobHelper is a common, consistent storage interface for Microsoft Azure, Amazon S3, Komodo, Kvpbase, and local filesystem written in C#.
Stars: ✭ 23 (-99.42%)
Mutual labels:  aws-s3, s3, s3-bucket, azure-storage
Cryfs
Cryptographic filesystem for the cloud
Stars: ✭ 1,560 (-60.33%)
Mutual labels:  cloud-storage, fuse, fuse-filesystem, filesystem
moodle-tool objectfs
Object file storage system for Moodle
Stars: ✭ 61 (-98.45%)
Mutual labels:  filesystem, aws-s3, s3-bucket, azure-blob-storage
Fusell Seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 9 (-99.77%)
Mutual labels:  fuse, fuse-filesystem, filesystem, posix
Mc
MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage.
Stars: ✭ 1,962 (-50.1%)
Mutual labels:  s3, aws-s3, google-cloud-storage, filesystem
Minio Hs
MinIO Client SDK for Haskell
Stars: ✭ 39 (-99.01%)
Mutual labels:  s3, aws-s3, cloud-storage, s3-bucket
Sftpgo
Fully featured and highly configurable SFTP server with optional HTTP, FTP/S and WebDAV support - S3, Google Cloud Storage, Azure Blob
Stars: ✭ 3,534 (-10.12%)
Mutual labels:  s3, cloud-storage, google-cloud-storage, azure-blob
Wal E
Continuous Archiving for Postgres
Stars: ✭ 3,313 (-15.74%)
Mutual labels:  s3, google-cloud-storage, openstack-swift, azure-blob
simply-static-deploy
WordPress plugin to deploy static sites easily to an AWS S3 bucket.
Stars: ✭ 48 (-98.78%)
Mutual labels:  aws-s3, s3, s3-bucket
go-storage
A vendor-neutral storage library for Golang: Write once, run on every storage service.
Stars: ✭ 387 (-90.16%)
Mutual labels:  s3, cloud-storage, gcs
storage
Go package for abstracting local, in-memory, and remote (Google Cloud Storage/S3) filesystems
Stars: ✭ 49 (-98.75%)
Mutual labels:  filesystem, s3, google-cloud-storage
flask-drive
A simple Flask app to upload and download files off Amazon's S3
Stars: ✭ 23 (-99.42%)
Mutual labels:  aws-s3, s3, s3-bucket
cubefs
CubeFS is a cloud native distributed storage platform.
Stars: ✭ 3,062 (-22.13%)
Mutual labels:  filesystem, s3, posix
go-fsimpl
Go io/fs.FS filesystem implementations for various URL schemes
Stars: ✭ 225 (-94.28%)
Mutual labels:  filesystem, s3, gcs
loggedfs-python
Filesystem monitoring with Fuse and Python
Stars: ✭ 21 (-99.47%)
Mutual labels:  fuse, filesystem, fuse-filesystem
nestjs-storage
Nestjs file system / file storage module wrapping flydrive
Stars: ✭ 92 (-97.66%)
Mutual labels:  filesystem, s3, google-cloud-storage
Bucket-Flaws
Bucket Flaws ( S3 Bucket Mass Scanner ): A Simple Lightweight Script to Check for Common S3 Bucket Misconfigurations
Stars: ✭ 43 (-98.91%)
Mutual labels:  aws-s3, s3, s3-bucket

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

Build Status Github All Releases Twitter Follow

Overview

Goofys allows you to mount an S3 bucket as a filey system.

It's a Filey System instead of a File System because goofys strives for performance first and POSIX second. Particularly things that are difficult to support on S3 or would translate into more than one round-trip would either fail (random writes) or faked (no per-file permission). Goofys does not have an on disk data cache (checkout catfs), and consistency model is close-to-open.

Installation

$ brew cask install osxfuse
$ brew install goofys
  • Or build from source with Go 1.10 or later:
$ export GOPATH=$HOME/work
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys

Usage

$ cat ~/.aws/credentials
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
$ $GOPATH/bin/goofys <bucket> <mountpoint>
$ $GOPATH/bin/goofys <bucket:prefix> <mountpoint> # if you only want to mount objects under a prefix

Users can also configure credentials via the AWS CLI or the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.

To mount an S3 bucket on startup, make sure the credential is configured for root, and can add this to /etc/fstab:

goofys#bucket   /mnt/mountpoint        fuse     _netdev,allow_other,--file-mode=0666,--dir-mode=0777    0       0

See also: Instruction for Azure Blob Storage, Azure Data Lake Gen1, and Azure Data Lake Gen2.

Got more questions? Check out questions other people asked

Benchmark

Using --stat-cache-ttl 1s --type-cache-ttl 1s for goofys -ostat_cache_expire=1 for s3fs to simulate cold runs. Detail for the benchmark can be found in bench.sh. Raw data is available as well. The test was run on an EC2 m5.4xlarge in us-west-2a connected to a bucket in us-west-2. Units are seconds.

Benchmark result

To run the benchmark, configure EC2's instance role to be able to write to $TESTBUCKET, and then do:

$ sudo docker run -e BUCKET=$TESTBUCKET -e CACHE=false --rm --privileged --net=host -v /tmp/cache:/tmp/cache kahing/goofys-bench
# result will be written to $TESTBUCKET

See also: cached benchmark result and result on Azure.

License

Copyright (C) 2015 - 2019 Ka-Hing Cheung

Licensed under the Apache License, Version 2.0

Current Status

goofys has been tested under Linux and macOS.

List of non-POSIX behaviors/limitations:

  • only sequential writes supported
  • does not store file mode/owner/group
    • use --(dir|file)-mode or --(uid|gid) options
  • does not support symlink or hardlink
  • ctime, atime is always the same as mtime
  • cannot rename directories with more than 1000 children
  • unlink returns success even if file is not present
  • fsync is ignored, files are only flushed on close

In addition to the items above, the following are supportable but not yet implemented:

  • creating files larger than 1TB

Compatibility with non-AWS S3

goofys has been tested with the following non-AWS S3 providers:

  • Amplidata / WD ActiveScale
  • Ceph (ex: Digital Ocean Spaces, DreamObjects, gridscale)
  • EdgeFS
  • EMC Atmos
  • Google Cloud Storage
  • Minio (limited)
  • OpenStack Swift
  • S3Proxy
  • Scaleway
  • Wasabi

Additionally, goofys also works with the following non-S3 object stores:

  • Azure Blob Storage
  • Azure Data Lake Gen1
  • Azure Data Lake Gen2

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].