How to Access Files on DigitalOcean Spaces from Droplets via CLI

DigitalOcean Space

Object Storage like DigitalOcean Spaces are very powerful. However, being an external service also comes with its share of inconvenience.

What if I told you that we can interact with it like a local directory if we just mount it to our droplets? Here’s how.

If you are looking to transfer large amount of files between your Droplet and Spaces, check out this guide on using rclone instead. It’s much faster!

1. Install S3FS FUSE

The good thing about DigitalOcean Space is that it is S3-compatible. This enables a lot of S3 tools support out of the box. One fantastic tool we’ll use here is s3fs.

sudo apt-get update
sudo apt-get install s3fs

Once that is done, let’s setup your DigitalOcean Space credentials:

echo <space_key>:<space_token> > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

2. Managing User Permissions

By default, DigitalOcean Space is mounted for root user. Because of that, any files or folders that are created via the web control panel is not accessible by non-root users after it’s mounted, which is not ideal.

To make sure that we can access it via a non-root user, we need to update the config file:

sudo nano /etc/fuse.conf

Uncomment the part that says:

user_allow_other

Next, find out your user’s details by typing the following command:

id

You’ll see an output like this:

uid=1000(forge) gid=1000(forge) groups=1000(forge)…

In thise case, my user is forge, so I’ve noted down the uid and gid of the user for the next step.

3. Mount DigitalOcean Space

First, make a mounting folder:

mkdir <folder>

Then, let’s mount the Space to our new folder:

s3fs <space_name> <folder> -o url=https://sgp1.digitaloceanspaces.com -o use_cache=/tmp -o allow_other -o use_path_request_style -o uid=1000 -o gid=1000

Or if you want to mount a subfolder instead of the whole DO Space, you can do the following:

s3fs <space_name>:/<space_folder> <folder> -o url=https://sgp1.digitaloceanspaces.com -o use_cache=/tmp -o allow_other -o use_path_request_style -o uid=1000 -o gid=1000

Now you should be able to do the usual stuff like cd or ls or cp files etc like it’s inside the local harddisk. ❤

4. Unmounting

And if you ever need to unmount the Space, it’s also very easy:

fusermount -u <folder>

That’s all! Now you can manage your DigitalOcean Spaces just like a local directory.

Was it helpful?

If you find this article helpful, do give me a little clap on Medium. 😄 It really makes my day to know that I have helped a fellow developer out there. Thanks!

--

--

--

I write about Laravel, PHP, and web development related articles.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

To NFT or Not to NFT? That is the Question.

🤖E3 | Favorite language, practice API, Bootstrap & CSS | 2020

Any benefit in metioning the Character set encoding in the meta d

Production Spark via Databricks

Start Git with no effort — 2…!

SLAE: Assignment 1

ElasticSearch or Solr? Which open-source search engine you should choose?

Is Zookeeper required for Kafka ?

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Jian Jye

Jian Jye

I write about Laravel, PHP, and web development related articles.

More from Medium

Docker kernel uniqueness

Setting up SSH Authentication in Remote Server

Installing Docker Desktop on modern Windows

Turn Windows features on or off

How to install Chocolatey in windows- DevOps Champ