本文介绍如何通过s3fs、goofys以及Rclone在不同操作系统中将OSS Bucket挂载到本地文件系统,让您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享。
前提条件
已创建RAM用户并获取访问密钥(AccessKey)。具体操作,请参见创建RAM用户。
为已创建的RAM用户授予系统权限或自定义权限。
系统权限:您可以为RAM用户授予管理OSS的权限AliyunOSSFullAccess或者只读访问OSS的权限AliyunOSSReadOnlyAccess。
自定义权限:您还可以结合业务场景,通过创建自定义权限实现OSS的细粒度权限控制。更多信息,请参见RAM Policy常见示例。
s3fs
s3fs支持您在Linux,macOS系统中,将存储空间挂载到本地文件系统,让您能够像操作本地文件一样操作对象,实现数据的共享。关于s3fs的更多信息,请参见GitHub。如果您在s3fs使用过程中遇到问题,请参见常见问题进行排查。
主要特点
支持POSIX文件系统的大部分功能,例如上传和下载文件、目录、 软链接、设置用户权限等。
支持随机写和追加写。
不支持硬链接。
大文件通过分片方式上传。
依赖本地文件作为缓存。
通过s3fs上传或者下载文件时,需要经过本地缓存,其读写性能取决于磁盘的速度。由于s3fs缓存可以无限增长,请确保定期清除。
操作步骤
通过s3fs挂载存储空间的步骤如下:
安装s3fs。
以下仅列举Ubuntu、CentOS以及Mac系统安装s3fs的命令。关于其他系统安装s3fs的更多信息,请参见s3fs安装。
Ubuntu
sudo apt install s3fs
CentOS
sudo yum install epel-release sudo yum install s3fs-fuse
Mac
brew install --cask macfuse brew install gromgit/fuse/s3fs-mac
配置账号访问信息。
将具有Bucket访问权限的AccessKey ID和AccessKey Secret信息存放在.passwd-s3fs文件中。
echo ACCESS_KEY_ID:ACCESS_KEY_SECRET > ${HOME}/.passwd-s3fs
将.passwd-s3fs文件的权限设置为600。
chmod 600 ${HOME}/.passwd-s3fs
挂载存储空间。
创建挂载点。
mkdir /tmp/oss-bucket
将华东1(杭州)地域的examplebucket挂载至/tmp/oss-bucket。
s3fs examplebucket /tmp/oss-bucket -o passwd_file=$HOME/.passwd-s3fs -ourl=http://oss-cn-hangzhou.aliyuncs.com
goofys
goofys支持您在Linux,macOS系统中,将存储空间挂载到本地文件系统中。goofys仅支持少量的POSIX文件系统功能。关于goofys的详细说明,请参考GitHub。
主要特点
仅支持顺序写。
不保存文件的权限和属性。
不支持软链接和硬链接。
创建时间(ctime)、访问时间(atime)与修改时间(mtime)保持一致。
不依赖本地缓存。
由于不支持对文件元数据的操作,在一些依赖文件元数据的场景,goofys存在使用限制。
由于不依赖本地缓存,相对于s3fs,goofys在cp,mv等操作上有更好的读写性能。更多信息,请参见Benchmark。
由于不支持随机写,goofys更适用于只读的场景上使用。
您可以根据实际的业务特性,灵活选择。
操作步骤
通过goofys挂载存储空间的步骤如下:
安装goofys。
以下仅列举Linux以及Mac系统安装goofys的命令。关于其他系统安装goofys的更多信息,请参见goofys安装。
Linux
curl -SL "https://github.com/kahing/goofys/releases/latest/download/goofys" -o $HOME/goofys chmod u+x $HOME/goofys
Mac
brew cask install osxfuse brew install goofys
配置账号访问信息。
创建配置文件。
mkdir ~/.aws
打开配置文件。
vi ~/.aws/credentials
配置访问密钥AccessKey ID和AccessKey Secret。
[default] aws_access_key_id = 访问OSS的AccessKey ID。 aws_secret_access_key = 访问OSS的AccessKey Secret。
挂载存储空间。
以将华东1(杭州)地域的examplebucket挂载到/mnt/oss-bucket下为例。
创建挂载点。
mkdir /mnt/oss-bucket
将examplebucket挂载到/mnt/oss-bucket。
$HOME/goofys --endpoint http://oss-cn-hangzhou.aliyuncs.com --subdomain examplebucket /mnt/oss-bucket
说明以上示例中的--subdomain为必选项,用于启用虚拟域名。其他选项,例如挂载的Bucket,Bucket所在地域对应的endpoint以及挂载点信息,请根据实际情况替换。
如果是与OSS同地域的ECS访问,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。
Rclone
Rclone是一个命令行程序,用于管理云存储中的数据,支持在50多种云存储产品间同步数据。相对于s3fs和goofys,Rclone还支持将存储空间挂载到Windows系统上,作为本地磁盘共享数据。
主要特点
Rclone支持文件同步、文件传输、加密、挂载等。
Rclone支持多种系统,能让您将存储空间挂载到本地文件系统中,并通过多种协议提供服务。
关于Rclone的介绍,请参见Rclone。
操作步骤
在Windows操作系统下,通过Rclone挂载存储空间的步骤如下:
下载并按照页面指引安装Winfsp。
以下载winfsp-1.12.22339版本为例。下载地址,请参见Winfsp。
下载Rclone工具。
以下载rclone-v1.60.1-windows-amd64版本为例。下载地址,请参见Rclone。Rclone是一个命令行程序,下载后,只需解压到本地任意目录即可,此处以解压到D:\Rclone目录为例。
配置Rclone。
将D:\Rclone添加到环境变量。
打开命令行窗口,输入rclone --version,然后按下Enter。
返回rclone v1.60.1,表明Rclone已成功安装。
输入rclone config命令,然后按下Enter。
输入n,按下Enter,然后新建new remote。
以new remote命名为test-remote为例。
输入磁盘名称,例如oss-disk,然后按下Enter。
选择包含Amazon S3 Compliant Storage的选项,即输入5,然后按下Enter。
选择包含Alibaba Cloud Object Storage System (OSS)的选项,即输入2,然后按下Enter。
执行到env_auth>,按下Enter。
执行到access_key_id>,输入OSS的访问密钥AccessKey ID,然后按下Enter。
执行到secret_access_key> ,输入OSS的访问密钥AccessKey Secret,然后按下Enter。
执行到endpoint>,输入访问OSS的endpoint,然后按下Enter。
以访问华东1(杭州)外网为例,endpoint填写为oss-cn-hangzhou.aliyuncs.com。如果是ECS上的Windows环境,您可以使用oss-cn-hangzhou-internal.aliyuncs.com的内网endpoint。
执行到acl>,选择Object读写权限。
该选项仅对新上传的Object有效。您可以根据实际需求选择合适的读写权限。此处以选择default(私有权限)为例,即输入1,然后按下Enter。
执行到storage_class>,选择Object的存储类型。
此处以选择default(继承Bucket存储类型)为例,即输入1,然后按下Enter。
执行到Edit advanced config? (y/n) ,输入n,然后按下Enter。
输入q,完成所有配置。
挂载存储空间。
以将examplebucket挂载到E:盘,并以D:\disk-cache路径作为缓存目录为例。
rclone mount oss-disk:/examplebucket E: --cache-dir D:\disk-cache --vfs-cache-mode writes
返回The service rclone has been started信息,表示挂载成功。此时,您还可以查看到examplebucket(E:)的磁盘。