准备工作
- 获取S3存储桶Key ID和Key Secret,并创建好S3存储桶
1. 安装s3fs
1 | yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel |
编译安装s3fs
1 | git clone https://github.com/s3fs-fuse/s3fs-fuse.git |
检查s3fs是否安装成功
1 | which s3fs |
创建访问密钥文件
1 | 格式: echo <KeyID>:<KeySecret> > /etc/passwd-s3fs |
1 | echo AKIxxxxx:2LXBbodxxxxxxxx > /etc/passwd-s3fs |
2. 手动挂载S3存储桶
s3fs的命令格式是:
s3fs BUCKET MOUNTPOINT [OPTION]…
s3fs [S3存储桶名] [本地目录名] [OPTION]
OPTION是可选项,格式是 –o
= ,常用的options有: 名称 含义 缺省值 passwd_file 指定挂载的密钥文件 connect_timeout 设置超时连接等待的时间,单位秒 300 url 设置访问s3的url http://s3.amazonaws.com endpoint 设置s3存储桶的endpoint us-east-1 allow_other 设置allow_other允许所有用户访问挂载点目录,设置这个选项需要在 /etc/fuse.conf 文件添加user_allow_other选项
手动挂载AWS海外区域S3存储桶
命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
1 | mkdir -p /data/S3 |
1 | 卸载存储桶 |
3. 设置开机自动挂载S3存储桶
cat /etc/fstab
1 | 添加如下行: |
4. 挂载错误解决
错误:transport endpoint is not connected
解决方法:如果自动挂载S3用到了allow_other参数,则需要修改/etc/fuse.conf配置文件
1 | mount_max = 1000 |
然后重新挂载
1 | umount /data/S3 |
关于局限性
利用S3fs可以方便的把S3存储桶挂载在用户本地操作系统目录中,但是由于S3fs实际上是依托于Amazon S3服务提供的目录访问接口,所以不能简单的把S3fs挂载的目录和本地操作系统目录等同使用。用户使用S3f3挂载S3存储桶和直接访问S3服务有类似的使用场景。适用于对不同大小文件对象的一次保存(上传),多次读取(下载)。不适用于对已保存文件经常做随机修改,因为每次在本地修改并保存文件内容都会导致S3fs上传新的文件到Amazon S3去替换原来的文件。
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2020/11/24/Linux挂载AWS-S3存储桶/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!