s3fs是一个将s3服务器上的桶映射为本地目录的程序。
项目源码位于: https://github.com/s3fs-fuse/s3fs-fuse
这是一个比较长期的项目了,现在在大数据领域S3协议基本上已经成为最通用的协议。
各大云平台,什么阿里云,某为云,某牛云都根据官方的这个项目开发了一个自己这个那个项目。
s3fs在使用上本身是比较简单的,但是总是有一些细节需要注意。
这里不讲基本的使用方法,基本的使用方法大家可以参考:https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon
大概过程就是生成密码文件,密码文件中的内容是:
accessKeyId:secretAccessKey
再运行命令:
./s3fs mnt ../mnt -o passwd_file=.passwd \
-o url=http://10.10.16.2:1999 \
-o sigv4 -o umask=222 \
-o use_path_request_style \
-o dbglevel=info \
-d -d -f
这里有几个需要注意的几个点,其实就是几个配置项,s3fs本身的配置项是非常多的,开发了很久,有些配置项是为特殊情况下使用的。一般人很难搞清楚。
1.路径请求样式
-o use_path_request_style
如果不添加此参数,有些平台可能用不了,原因是路径不太对。
2. 用户签名算法
选择版本2或版本4,
-o sigv2
或者用sigv4
3.挂载OBS上的某个目录到本地目录
s3fs本身是将桶挂载到本地的某个目录上的,但是也支持将OBS的某个目录挂载到本地目录。
参数的形式如下:
./s3fs mnt:/dir ../mnt -o passwd_file=.passwd
mnt是桶的名称, /dir是桶里面的文件夹的名称。
但根据官方文档进行如此配置还不够, 经过实际测试还需要添加一个选项
-o compat_dir
详细的原因可以参考这个issue
v1.92 mount issue , folder path appending with additional / · Issue #2186 · s3fs-fuse/s3fs-fuse · GitHub
以上。