配置阿里云子账号

创建一个阿里云子账号,并赋予AliyunOSSFullAccess 权限。生成 AccessKey,记录下 AccessKeyIDAccessKeySecret 的值,后面会用到。

安装 rclone

推荐使用官方提供的一键脚本安装,适用于所有 Linux 发行版:

curl https://rclone.org/install.sh | sudo bash

如果你使用 Ubuntu 或 Debian,推荐使用 apt 来安装

sudo apt install rclone

如果你想通过其他方式安装,请参考官方文档

连接阿里云 OSS

创建 rclone 配置文件夹(若不存在):

mkdir -p ~/.config/rclone

编辑配置文件:

vim ~/.config/rclone/rclone.conf

输入以下内容,并按实际情况填写 access_key_idsecret_access_key和 endpoint

[oss]
type = s3
provider = Alibaba
access_key_id = 此处改为你的 access_key_id
secret_access_key = 此处改为你的 secret_access_key
endpoint = oss-cn-zhangjiakou-internal.aliyuncs.com 此处请根据你oss所在地区分配的地域节点配置
acl = public-read
storage_class = STANDARD
bucket_acl = public-read

保存并退出。

挂载阿里云 OSS

创建用于挂载的本地目录(这里以 /mnt/ossfs 为例):

mkdir -p /mnt/ossfs

安装挂载 OSS 需要用到的 fuse 工具:

sudo apt install fuse fuse3

编辑 /etc/fuse.conf

sudo vim /etc/fuse.conf

删掉 user_allow_other 前面的注释,如图所示。保存并退出。

挂载存储桶(这里以挂载 public-sourcecdn 存储桶的 /wiki目录为例):

rclone mount oss:public-sourcecdn/wiki /mnt/oss  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --daemon

这里的 oss 是rclone配置中节点的名称,public-sourcecdn 是oss的Bucket名称,wiki是Bucket的目录,/mnt/oss 是挂载到本地的目录。

可以看到,存储桶已挂载到 /mnt/oss 下:

root@debain:~ $ df -h
Filesystem                 Size  Used Avail Use% Mounted on
udev                 844M     0  844M   0% /dev
tmpfs                173M  1.1M  172M   1% /run
/dev/vda3             40G  7.4G   30G  20% /
/dev/vda2            189M   12M  177M   7% /boot/efi
oss:public-sourcecdn/wiki  1.0P     0  1.0P   0% /mnt/oss

若要取消挂载,执行以下命令即可:

fusermount -qzu /mnt/oss

开机自动挂载

以服务形式开机挂载

编辑 rclone-oss.service文件:

sudo vim /etc/systemd/system/rclone-oss.service

填入以下内容(请根据实际情况修改 User 和 ExecStart 字段):

[Unit]
Description=rclone

[Service]
User=root
ExecStart=rclone mount oss:public-sourcecdn/wiki /mnt/oss  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
Restart=on-abort

[Install]
WantedBy=multi-user.target

保存并退出。

为确保配置生效,请重载配置文件:

sudo systemctl daemon-reload

启动 rclone 服务:

sudo systemctl start rclone-oss

设置开机自启:

sudo systemctl enable rclone-oss

其他命令:

sudo systemctl stop rclone-oss # 停止服务
sudo systemctl restart rclone-oss # 重启服务
sudo systemctl disable rclone-oss # 禁用开机自启
sudo systemctl status rclone-oss # 查看运行状

使用systemed.mount自动挂载
设置rclone 命令:

$ which rclone
/usr/bin/rclone

$ ln -s /usr/bin/rclone /sbin/mount.rclone

在 /etc/systemd/system/ 路径下创建 .mount 文件:

假设挂在路径为 /mnt/oss, 则文件名为 mnt-oss.mount 这里的文件名必须和挂载路径一致

[Unit]
After=network-online.target
[Mount]
Type=rclone
What=public-sourcecdn/wiki # oss的挂载目录bucket名称 + 目录
Where=/mnt/oss #挂载的本地目录
Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=/root/.config/rclone/rclone.conf,cache-dir=/var/rclone

执行挂载命令:

# 重载配置文件
$ systemctl daemon-reload

$ systemctl start mnt-oss.mount

创建开机启动服务:

同路径下新增一个同名前缀,后缀automount的文件,例如mnt-oss.automount

[Unit]
After=network-online.target
Before=remote-fs.target
[Automount]
Where=<挂载路径> # /mnt/oss
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target

启动方式改为 systemctl start mnt-oss.automount

automount将会通过同名 mount 进行挂载,无需start .mount

systemctl enable mnt-mount.automount    #开机自启