所有文章

如何在 Mac 上把 Amazon S3 存储桶装载为磁盘

· 阅读约 9 分钟

简单地说: macOS 自己做不到。访达的连接服务器(⌘K)支持的是 SMB、WebDAV 这类文件共享协议,不支持 S3。要把存储桶当作磁盘来用,需要一个能与 S3 通信、并把存储桶呈现为文件系统的程序。免费的办法是 rclone:它的 nfsmount 命令把存储桶交给 macOS 内置的 NFS 客户端,既不需要 macFUSE,也不需要管理员密码。用鼠标点几下的办法,是让一个文件管理器替你完成同样的事,比如 Folia Files。

本文针对 Amazon S3 以及 Backblaze B2、Wasabi、MinIO 等 S3 兼容服务介绍这两种办法,然后说明装载后的存储桶能做什么、不能做什么。关于 SFTP 服务器,以及为什么最好避开 macFUSE,请看如何在 Mac 上不用 macFUSE 连接 SFTP 和 S3。

先准备好四项信息

无论用哪种办法装载,S3 要的信息都一样:

  • 访问密钥 ID 和私密密钥。 在 AWS 上,为一个 IAM 用户创建访问密钥。在 Backblaze B2 上,创建一个应用程序密钥:它的 keyID 就是访问密钥 ID,applicationKey 就是私密密钥。只限于这一个存储桶的密钥,比能打开整个账户的密钥更安全。
  • 存储桶名称,如果只需要其中一部分,再加上里面的一个文件夹。
  • 区域,也就是存储桶所在的位置,例如 AWS 上的 eu-west-3。
  • 端点,即服务的地址。Amazon S3 不需要;其他提供商都需要,并会在各自的控制台里显示。
服务 端点 区域
Amazon S3 留空 存储桶的区域,例如 eu-west-3
Backblaze B2 s3.eu-central-003.backblazeb2.com 中间那一段:eu-central-003
Wasabi s3.eu-central-1.wasabisys.com eu-central-1
Scaleway s3.fr-par.scw.cloud fr-par
自己服务器上的 MinIO http://nas.local:9000 通常留空

以上地址只是示例:端点取决于存储桶创建在哪里,请从你的提供商那里复制自己的地址。

用 rclone 免费装载存储桶

1. 安装 rclone

用 Homebrew,在“终端”中输入:

brew install rclone

Homebrew 版的 rclone 会拒绝运行 rclone mount,因为它依赖 macFUSE 或 FUSE-T。这没关系:你要用的是 rclone nfsmount,两者都不需要。

2. 把存储桶保存为“远程”

远程(remote)是 rclone 记住的一个有名称的连接。以 Backblaze B2 的存储桶为例:

rclone config create b2 s3 provider=Other access_key_id=YOUR_KEY_ID secret_access_key=YOUR_SECRET endpoint=s3.eu-central-003.backblazeb2.com region=eu-central-003

换成其他服务时,修改 provider:AWS(并去掉端点)、Wasabi、Scaleway、Minio、R2 用 Cloudflare,rclone 列表里没有的服务用 Other。运行 rclone config 会逐一问同样的问题,私密密钥也不会留在 shell 的历史记录里。无论哪种方式,rclone 都会把密钥写进它的配置文件;除非你为配置设置密码,否则是明文保存。

列出存储桶的顶层,确认一切正常:

rclone lsd b2:alex-archives

3. 装载

装载点必须是一个已经存在的空文件夹:

mkdir -p ~/Buckets/archives
rclone nfsmount b2:alex-archives ~/Buckets/archives --vfs-cache-mode writes --volname "B2 归档"

现在,存储桶里的文件出现在 ~/Buckets/archives 中,表现为一个名叫“B2 归档”的磁盘。命令会在它的终端窗口里一直运行:在该窗口按 ⌃C 即可取消装载。

  • --vfs-cache-mode writes 让 App 能正常存储:写入的内容先进入本地缓存,再上传到存储桶。没有这个选项,同时以读写方式打开文件的 App 就无法存储。
  • 如果只想查看归档,改用 --read-only。
  • 如果其他人或其他 Mac 也会往存储桶里添加文件,加上 --dir-cache-time 30s:默认情况下,rclone 每五分钟才重新读取一次文件夹。

用 Folia Files 装载存储桶

Folia Files 是一款 Mac 文件管理器,它同样用 rclone 的 nfsmount 装载 S3,但会记住连接,把私密密钥保存在 macOS 的钥匙串里,并在你点按时装载存储桶。在网站版中,它只需要按上文方法安装好的 rclone。

  1. 选取工具 › 连接(服务器和云服务)…(⌘K),点按新建连接,再点按 S3 / 兼容。在边栏中,服务器旁边的 + 会直接打开服务器类型列表。
  2. 输入显示名称:它会成为磁盘的名称。
  3. 在 S3 存储中选取提供商:AWS、Scaleway、Wasabi、Minio、DigitalOcean、IDrive,其他任何服务(例如 Backblaze B2)选其他。然后填写访问密钥 ID(Access Key ID)、私密密钥、区域、端点(可选)(AWS 留空)和存储桶和文件夹,例如 alex-archives/2026。
  4. 在选项中,只浏览的归档可打开只读,每天都用的存储桶可打开 Folia Files 启动时自动装载。
  5. 点按测试连接:Folia Files 会列出文件夹的顶层,告诉你找到了多少个项目,或者显示错误。然后点按存储并装载。

Folia Files 的“连接”窗口,显示一个连接到 Wasabi 存储桶的 S3 连接:提供商、访问密钥、区域、端点、存储桶和文件夹,以及装载选项

之后,存储桶会出现在边栏的服务器部分。点按它,必要时会先装载,再在面板中打开;装载后,它就是整台 Mac 都能用的磁盘,访达和其他 App 也看得到。在 Folia Files 中,你可以把存储桶放在一个面板里,把 Mac 上的文件夹放在另一个面板里,在两者之间拖动文件。在网站版中,设为自动装载的连接会在睡眠之后或网络恢复时自动重新连接(设置 › 文件与网络,默认开启)。

Folia Files 边栏“服务器”部分中的两个 S3 连接 Backblaze B2 和 Amazon S3,旁边是一列文稿

Folia Files 还能连接哪些服务,请看“服务器和云服务”页面。

装载后的存储桶能做什么,不能做什么

S3 存储的是对象,而不是磁盘上的文件。装载能掩盖大部分差别,但不是全部:

  • 不会保留任何离线文件。 文件在你打开时才从存储桶读取。缓存只保存你存储的内容,直到上传完成:Folia Files 把它限制在 1 GB,并在文件关闭约两秒后上传。没有网络时,既无法列出存储桶,也无法打开其中的文件。如果想在 Mac 上留一份副本,可以把存储桶里的文件夹同步到本地文件夹。如果你最看重离线文件,Mountain Duck 和 CloudMounter 会把文件留在本地;这篇比较列出了各个 App 能做什么。
  • 每次存储都会上传整个文件。 S3 无法只修改对象的一部分:对一个大视频做一点小改动,也会把整个文件重新上传。
  • 给文件夹重新命名,就是给里面的每个文件重新命名。 S3 没有真正的文件夹,只有带斜杠的名称,所以给大文件夹重新命名或移动它都要花些时间。
  • 空文件夹留不住。 你新建的文件夹只有在放进文件后才会留在存储桶里。在命令行使用 rclone 时,--s3-directory-markers 选项可以保留空文件夹。
  • 浏览也可能花钱。 列出文件夹、打开或预览文件都是请求,下载也可能计入出站流量。请查看提供商的价格,以及存储桶是否会保留你替换或删除的文件的旧版本:Backblaze B2 默认就是这样设置的。

网站版与 Mac App Store 版

S3 要经过 rclone,这正是 Folia Files 两个版本的不同之处。网站版只要装好 rclone 就能装载 S3。在 Mac App Store 版中,Apple 的沙盒不允许 App 启动 rclone,因此 S3 需要 Folia Files Companion,这是一款可在 foliafiles.com 获取的免费小 App(仍然需要 rclone)。SMB、WebDAV 等网络共享在两个版本中都能直接使用,无需额外安装。

常见问题

访达能连接 Amazon S3 吗? 不能。“连接服务器”不支持 S3。只有用 rclone 之类的工具装载后,存储桶才会出现在访达中。

需要 macFUSE 吗? 不需要。rclone nfsmount,以及使用它的 Folia Files,都通过 macOS 自带的 NFS 客户端装载:不需要系统扩展,也不需要管理员密码。

能装载 Cloudflare R2 或其他 S3 兼容服务吗? 用 rclone 时,在列表中选取对应的提供商(R2 选 Cloudflare),或者选 Other 并填写该服务的端点。在 Folia Files 中,“提供商”菜单里没有的服务选“其他”:在正式使用前先点按“测试连接”。