今天遇到一个诡异的 s3fs 报错。当修改完 /etc/fstab,添加了一条 Linode Bucket 记录后,再执行
mount -a
报错:
s3fs: BUCKET /path/name -- bucket name contains an illegal character
很奇怪,之前尝试时,s3fs-fuse 将 Linode Object Storage 挂载到 Ubuntu Server 本地文件系统 也遇到过同样问题,那次是 bucket name 写错了。这次确认了几次,名字确实没有写错。
/etc/fstab 内容
# bucket1
bucket1.sunzhongwei.com /var/bucket1 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://us-east-1.linodeobjects.com/ 0 0
# bucket2
bucket2 /var/bucket2 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://ap-south-1.linodeobjects.com/ 0 0
不知道为何 bucket1 没有问题,只有 bucket2 报错。
解决方案
bucket2:/ /var/bucket2 fuse.s3fs _netdev,allow_other,umask=022,uid=1000,gid=1000,use_path_request_style,nonempty,url=https://ap-south-1.linodeobjects.com/ 0 0
在 bucket name 后加上了 :/ 后缀,再次执行:
sudo mount /var/bucket2
就正常了。
bucket:/ 方式:s3fs 可执行文件自身会按冒号 : 分割第一个参数,明确知道冒号前是 Bucket 名,冒号后是子路径(这里 :/ 表示根目录)。这种方式不依赖任何外部脚本,几乎在任何环境下都能工作。
关于作者 🌱
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式