前言
部分存储桶的数据需要在本地进行操作,但是又不想直接下载到本地,这时候可以通过 s3fs 挂载到本地目录,实现本地操作云端数据的目的。
S3fs 是基于 FUSE 的文件系统,允许 Linux 和 MacOS 挂载 S3 的存储桶在本地文件系统,S3fs 能够保持对象原来的格式。
方案概述
- 安装 S3fs
- 获取 Cloudflare R2 存储桶的 Access Key 和 Secret Key
- 挂载 Cloudflare R2 存储桶到本地目录
- 设置开机自动挂载
操作步骤
一、安装 S3fs
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

结束。
参考资料: