Goofys
更新时间:2026-07-21
概述
本文档介绍 Goofys 在 Linux 和 macOS 系统中的安装方法,以及将百度智能云 BOS 存储桶挂载到本地文件系统的配置方法。
Goofys 是一个用 Go 语言开发的、适用于 Linux 和 macOS 系统的基于 FUSE 的轻量级开源挂载工具,可以将 BOS 存储桶挂载到本地文件系统中。Goofys 通过 S3 兼容协议访问 BOS,目前仅支持少量 POSIX 文件系统功能,更适用于只读场景。
前提条件
- 已准备 Linux 或 macOS 系统,并具备安装 Goofys 和 FUSE 组件的权限。
- 已获取 BOS 的 Access Key ID、Secret Access Key,以及可访问的 BOS Bucket。
- 挂载前已确认目标 Bucket 所在地域和 endpoint,北京地域 endpoint 为
https://bj.bcebos.com。## 主要特点
- 仅支持顺序写入,不支持随机写。
- 不支持符号链接或硬链接,不存储文件的 mode、owner、group 等属性。
- 不支持 rename 包含超过 1000 个子目录的目录。
- 创建时间(
ctime)、访问时间(atime)与修改时间(mtime)总是相同。 - 不依赖本地缓存,保证 close-to-open 一致性。
安装方法
Linux
执行以下命令下载 Goofys Linux 可执行文件并授予执行权限:
Bash
1curl -SL https://github.com/kahing/goofys/releases/latest/download/goofys -o goofys
2chmod +x goofys
下载完成后,可执行 ./goofys -v 确认可正常输出版本信息。
macOS
可选择 Homebrew 安装或源码编译安装。安装完成后,执行 goofys -v 确认可正常输出版本信息。
安装方式一:使用 Homebrew 安装
Bash
1brew install --cask osxfuse
2brew install goofys
3goofys -v
安装方式二:通过源码编译安装
Bash
1export PATH=$PATH:$GOPATH/bin
2git clone https://github.com/kahing/goofys.git
3cd goofys
4make install
5goofys -v
配置挂载
步骤 1:创建访问凭证文件和所在目录
Goofys 会读取 AWS S3 兼容凭证文件。执行以下命令创建 ~/.aws 目录并编辑 credentials 文件:
Bash
1mkdir -p ~/.aws
2vim ~/.aws/credentials
步骤 2:配置访问 AK/SK 到 credentials 文件中
在 ~/.aws/credentials 文件中写入以下内容:
Ini
1[default]
2aws_access_key_id = <BOS Access Key ID>
3aws_secret_access_key = <BOS Secret Access Key>
请将 <BOS Access Key ID> 和 <BOS Secret Access Key> 替换为实际 BOS 访问凭证。
注意: 不要将真实 AK/SK 写入公开文档、代码仓库或共享日志。
保存后,建议限制凭证文件权限:
Bash
1chmod 600 ~/.aws/credentials
步骤 3:挂载北京地域的 BOS Bucket 到本地目录
将 bucket-name 替换为目标 BOS Bucket 名称,将 /path/to/mount-dir 替换为本地挂载目录。挂载前请确认 Bucket 已存在,并且 AK/SK 对该 Bucket 具备读取、列举和写入权限。
Bash
1mkdir -p /path/to/mount-dir
2goofys --endpoint https://bj.bcebos.com bucket-name /path/to/mount-dir
步骤 4:查看挂载结果
进入本地挂载目录查看挂载结果。挂载成功后,可对 Bucket 内 Object 进行读取、写入和 List 操作。
Bash
1cd /path/to/mount-dir
2ls -la
注意事项
- macOS 使用 Homebrew 安装 osxfuse 可能存在版本不兼容问题。若出现
Error - The FUSE for macOS installation package is not compatible with this version of macOS,请参考 osxfuse文档 手动安装正确的版本。 - Goofys 支持挂载 Bucket 的某个 prefix,将挂载命令中的
bucket-name替换为bucket-name:prefix即可。 - Linux 环境中 mount 操作需要 root 权限,若不是 root 用户,需要使用
sudo或以root用户身份运行 Goofys 进行挂载,否则可能报错:main.FATAL Unable to mount file system, see syslog for details;详细报错日志可查看/var/log/messages文件。 - 在容器或受限主机中,如果无法访问
/dev/fuse,Goofys 挂载会失败;请在具备 FUSE 能力的 Linux 或 macOS 主机上执行挂载。5. 可通过umount命令卸载已挂载的挂载点:
Bash
1umount /path/to/mount-dir
评价此篇文章
