Skip to main content

s3fs-fuse

s3fs-fuse is a FUSE-based filesystem that mounts an S3 bucket as a local directory. Once mounted, ordinary tools (cp, rsync, your IDE) read and write through to the bucket.

Install

PlatformCommand
macOSbrew install macfuse s3fs
Debian/Ubuntusudo apt install s3fs
Fedora/RHELsudo dnf install s3fs-fuse

Configure credentials

Create a credentials file with your access key:

echo "YOUR_FILEBASE_KEY:YOUR_FILEBASE_SECRET" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

Mount a bucket

mkdir -p ~/mount/my-bucket

s3fs my-bucket ~/mount/my-bucket \
-o passwd_file=~/.passwd-s3fs \
-o url=https://s3.filebase.io \
-o use_path_request_style \
-o sigv4 \
-o endpoint=auto

The bucket is now reachable at ~/mount/my-bucket as a regular directory:

cp ./photo.jpg ~/mount/my-bucket/
ls ~/mount/my-bucket/

Auto-mount on boot

Add to /etc/fstab:

my-bucket /mnt/my-bucket fuse.s3fs _netdev,allow_other,passwd_file=/etc/passwd-s3fs,url=https://s3.filebase.io,use_path_request_style,sigv4,endpoint=auto 0 0

The credentials file at /etc/passwd-s3fs must be chmod 600 and owned by root.

Performance notes

s3fs is convenient but not fast. Each filesystem operation translates to one or more S3 API calls. For workloads that:

  • Read many small files repeatedly → use a real filesystem and sync to/from Filebase.
  • Need high throughput → use the AWS CLI or rclone directly.
  • Need POSIX semantics (locking, atomic rename) → s3fs is a poor fit.

Use s3fs for legacy applications that expect a filesystem and you can't change.

Caching

To improve repeat-read performance:

s3fs my-bucket ~/mount/my-bucket \
-o passwd_file=~/.passwd-s3fs \
-o url=https://s3.filebase.io \
-o use_path_request_style \
-o sigv4 \
-o use_cache=/var/cache/s3fs \
-o ensure_diskfree=1024

use_cache keeps a local copy of read files; ensure_diskfree ensures at least 1 GB of free disk before extending the cache.

What's next

  • rclone — supports mount with much better performance for many use cases
  • AWS CLI