S3fs介绍
S3fs是基于FUSE的文件系统,允许Linux和Mac Os X 挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式。关于S3fs的详细介绍,请参见:https://github.com/s3fs-fuse/s3fs-fuse
利用S3fs挂载S3存储桶到lightsail或EC2 Linux实例

创建具有该S3存储桶访问权限的 IAM 用户,并为该IAM用户创建访问密钥。
安装和配置S3fs
安装s3fs
linux系统提供了预构建的包:
Amazon Linux via EPEL:
sudo amazon-linux-extras install epel
sudo yum install s3fs-fuse
Arch Linux:
sudo pacman -S s3fs-fuse
Debian 9 and Ubuntu 16.04 or newer:
sudo apt install s3fs
Fedora 27 or newer:
sudo dnf install s3fs-fuse
Gentoo:
sudo emerge net-fs/s3fs
RHEL and CentOS 7 or newer via EPEL:
sudo yum install epel-release
sudo yum install s3fs-fuse
SUSE 12 and openSUSE 42.1 or newer:
sudo zypper install s3fs
macOS 10.12 and newer via Homebrew:
brew install --cask macfuse
brew install gromgit/fuse/s3fs-mac
FreeBSD:
pkg install fusefs-s3fs
检查s3fs是否安装成功
[root@ip-172-31-23-148 s3fs-fuse]$ s3fs
s3fs: missing BUCKET argument.
Usage: s3fs BUCKET:[PATH] MOUNTPOINT [OPTION]...
[root@ip-172-31-23-148 ~]$ which s3fs
/usr/bin/s3fs
创建IAM用户访问密钥文件
- IAM用户访问密钥内容可以写入当前用户默认密钥文件比如“/home/ubuntu/.passwd-s3fs”或者用户自己创建的文件。
- 命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名]
- 命令举例:下面的例子将在当前用户默认路径创建密钥文件
echo AKIAIOEO4E2VOHLxxxxx:2LXBboddEpRLmWl48i3+b4ziwPL3bJ4vxxxxxxxx > /home/ubuntu/.passwd-s3fs
设置密钥文件只能够被当前用户访问
- 命令格式:chmod 600 [密钥文件名]
- 命令举例:下面的例子将设置密钥文件只能被当前用户访问
chmod 600 /home/ubuntu/.passwd-s3fs
手动挂载AWS海外区域S3存储桶
- 命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
命令举例:下面的例子将名为“ossXXXX”的日本区域S3存储桶挂载到指定的本地目录“/home/ec2-user/s3mnt”。
s3fs ossXXXX /home/ubuntu/s3mnt -o passwd_file=/home/ubuntu/.passwd-s3fs -o endpoint=ab-northeast-1
或
s3fs ossXXXX /home/ubuntu/s3mnt -o passwd_file=/home/ubuntu/.passwd-s3fs -o url=https://s3.ap-northeast-1.amazonaws.com -o endpoint=ap-northeast-1
挂载AWS中国北京区域S3存储桶
s3fs ossXXXX /home/ubuntu/s3mnt -o passwd_file=/home/ubuntu/.passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1
自动挂载海外区域S3存储桶
编辑/etc/fstab文件,添加后面的自动挂载命令。
vi /etc/fstab
- 命令格式:
s3fs#[S3存储桶名] [本地目录名] fuse _netdev,allow_other,endpoint=[区域名] 0 0
- 命令举例:添加下面的语句到/etc/fstab后,Linux系统启动后将自动把名为“ossXXXX”的新加坡区域S3存储桶挂载到本地目录“/home/ubuntu/s3mnt”,并允许其它操作系统用户(非root用户)访问。
/usr/bin/s3fs#ossXXXX /home/ubuntu/s3mnt fuse _netdev,allow_other,endpoint=ap-northeast-1 0 0
/usr/bin/s3fs#oss5987 /home/ubuntu/s3mnt fuse _netdev,use_path_request_style,url=http://s3.ap-northeast-1.amazonaws.com,passwd_file=/home/ubuntu/.passwd-s3fs 0 0
自动挂载中国北京区域S3存储桶
编辑/etc/fstab文件,添加后面的自动挂载命令。
vi /etc/fstab
- 命令格式:
s3fs#[S3存储桶名] [本地目录名] fuse allow_other,url=http://s3.cn-north-1.amazonaws.com.cn,endpoint=cn-north-1 0 0
- 命令举例:添加下面的语句到/etc/fstab后,Linux系统启动将自动把名为“s3fs-mount-bucket”的北京区域S3存储桶挂载到本地目录“/home/ec2-user/s3mnt”下,并允许其它操作系统用户(非root用户)访问。
/usr/bin/s3fs#ossXXXX /home/ubuntu/s3mnt fuse allow_other,url=http://s3.cn-north-1.amazonaws.com.cn,endpoint=cn-north-1 0 0