Skip to content
Go back

通过 S3fs 挂载 Cloudflare R2 存储桶到 Linux 服务器本地目录

| 0 Views Edit page

前言

部分存储桶的数据需要在本地进行操作,但是又不想直接下载到本地,这时候可以通过 s3fs 挂载到本地目录,实现本地操作云端数据的目的。

S3fs 是基于 FUSE 的文件系统,允许 Linux 和 MacOS 挂载 S3 的存储桶在本地文件系统,S3fs 能够保持对象原来的格式。


方案概述

  1. 安装 S3fs
  2. 获取 Cloudflare R2 存储桶的 Access Key 和 Secret Key
  3. 挂载 Cloudflare R2 存储桶到本地目录
  4. 设置开机自动挂载

操作步骤

一、安装 S3fs

官方仓库:https://github.com/s3fs-fuse/s3fs-fuse

Ubuntu 下可以直接通过 apt 安装:

sudo apt update
sudo apt install s3fs fuse

查看版本:

s3fs --version

版本信息

二、获取 Cloudflare R2 存储桶的 Access Key 和 Secret Key

参考我的另一篇文章:二、获取-Cloudflare-R2-存储桶的-Access-Key-和-Secret-Key

三、挂载 Cloudflare R2 存储桶到本地目录

1、创建认证用的密码文件

这里需要用到存储桶的 Access Key 和 Secret Key,将其写入到 ~/.passwd-s3fs 文件中:

echo ACCESS_KEY_ID:SECRET_ACCESS_KEY > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

2、挂载存储桶

# 创建本地目录
mkdir /mnt/cloudflare-r2
# 挂载
s3fs your_bucket_name \
    /mnt/cloudflare-r2 \
    -o passwd_file=~/.passwd-s3fs \
    # 使用 Cloudflare R2 的 Endpoint
    -o url=https://xxxxxxxxxxxxxxxxxxxxxx.r2.cloudflarestorage.com \
    -o use_path_request_style

之后进入 /mnt/cloudflare-r2 目录,即可看到存储桶的文件:

cd /mnt/cloudflare-r2
ls

挂载目录内的文件

创建一个新文件,然后查看 Cloudflare R2 存储桶内是否有该文件:

echo "Hello, Cloudflare R2" > test.txt

文件创建成功

四、设置开机自动挂载

编辑 /etc/fstab 文件,添加一行:

sudo vi /etc/fstab

在文件末尾添加一行,格式如下:

s3fs#your_bucket_name /mnt/cloudflare-r2 fuse _netdev,allow_other,passwd_file=/root/.passwd-s3fs,url=https://xxxxxxxxxxxxxxxxxxxxxx.r2.cloudflarestorage.com,use_path_request_style 0 0

注意这个 # 号是必须的,不加会报错

保存退出之后测试是否能够自动挂载:

systemctl daemon-reload 
sudo mount -a

没有问题的话,重启服务器,查看是否自动挂载:

reboot

再次创建文件验证重启后的挂载正常:

cd /mnt/cloudflare-r2
echo "Hello, Cloudflare R2 after reboot" > test2.txt

重启后文件创建成功

结束。


参考资料:


Edit page