跳到主要內容
AnyStorage
免費下載

R2 儲存用戶端

面向桌面團隊的 Cloudflare R2 儲存用戶端

Cloudflare R2 的桌面 GUI 用戶端:填入帳戶 endpoint 與 Object Read & Write 權杖,瀏覽 bucket、產生預簽名連結,並把 R2 掛載成本機磁碟。

支援 macOS、Windows 與 Linux 的 Cloudflare R2 桌面用戶端。endpoint、權杖、region 與 CORS 的關鍵細節皆於 2026 年 9 月在 Cloudflare 官方文件核對。

Cloudflare R2 GUI 用戶端,R2 儲存用戶端,Cloudflare R2 桌面用戶端

R2 有 S3 API,卻沒有桌面用戶端

Cloudflare R2 是一套講 S3 API 的物件儲存,改一個 endpoint,手上的 SDK 就繼續可用。讓團隊把資料搬過去的理由寫在定價頁上,2026 年 9 月核對的結果是:標準儲存每 GB-月 $0.015,而關於對外流量,頁面講得毫不含糊——"There are no charges for egress bandwidth for any storage class."(任何儲存類別都不收 egress 頻寬費用。)

取回免費會改變桶裡放什麼。發布用的二進位檔、影片母帶、訓練資料集、每晚的資料庫匯出,都不必再算一次取回成本。接著有人要在一般應用程式裡打開其中一個檔案,工具鏈就見底了。

Cloudflare 自己為 R2 收錄的整合文件,2026 年 9 月時只有 rclone、兩個 Terraform provider 與 14 篇 S3 SDK 頁面(aws CLI、boto3、aws-sdk-js-v3、aws4fetch、s3mini 等)。其中沒有任何一個 GUI 用戶端。 官方路線只有三條:控制台、wrangler(文件明載單檔上傳上限 315 MB)、加上 --endpoint-url 的 AWS CLI。AnyStorage 補的就是中間那一層:把 R2 的 bucket 當成檔案樹來用的桌面工作區。

連線 R2 需要的四個欄位

R2 的連線就是「endpoint 固定的 S3 連線」。主機名稱格式寫在 S3 API 文件裡,依管轄區(jurisdiction)劃分的變體寫在 API 權杖頁裡。

sh

# 一般帳戶 endpoint
https://<ACCOUNT_ID>.r2.cloudflarestorage.com

# 帶 jurisdiction 建立的 bucket 必須用對應 endpoint
https://<ACCOUNT_ID>.eu.r2.cloudflarestorage.com
https://<ACCOUNT_ID>.fedramp.r2.cloudflarestorage.com
https://<ACCOUNT_ID>.us.r2.cloudflarestorage.com

如果 bucket 是在 EU 或 FedRAMP 管轄區建立,而用戶端連的是一般帳戶 endpoint,那個 bucket 看起來就是不存在——這類「應該是金鑰不對」的回報,多半跟金鑰無關。

權杖。 控制台路徑是 R2 object storage → Account Details → Manage API Tokens,文件列出的權限層級是 Admin Read & Write、Admin Read only、Object Read & Write、Object Read only。桌面用戶端要的是 Object Read & Write,定義是 "read, write, and list objects in specific buckets";同一頁也寫明物件層級的權杖可以限定 "to a set of buckets",不必涵蓋整個帳戶。Secret Access Key 只顯示一次。

region。 文件寫的是 "the region for an R2 bucket is auto",並且 "an empty value and us-east-1 will alias to the auto region"。其他值都是猜的。

定址方式。 R2 兩種都接受。最早只有路徑定址,發布說明記錄 2022 年 5 月 16 日新增 "support for S3 virtual-hosted style paths, such as <BUCKET>.<ACCOUNT_ID>.r2.cloudflarestorage.com"。所以 path-style 開著可以、關著也可以。這跟自架的 MinIO 恰好相反:後者在設定網域之前只認 path-style。

在 AnyStorage 裡這是一個對話框的事:新增連線,選 Cloudflare R2,貼上 endpoint 與金鑰組。憑證加密存在本機,不需要註冊帳號。

R2 與 S3 不完全相同的地方

Cloudflare 公開了 S3 API 相容性清單,用戶端必須照著走。2026 年 9 月核對,與用戶端有關的部分是:

  • 沒有 ACL。 x-amz-acl 與整套 x-amz-grant-* 都未實作,權限來自權杖,而不是逐物件授權。
  • 物件標籤未實作,生命週期功能標註為 "currently in progress"(實作中)。
  • 儲存類別只有 STANDARD 與 STANDARD_IA。
  • 伺服器端加密支援 SSE-C,不支援 AWS KMS 的金鑰標頭;檢查碼支援複合形式的 CRC-32、CRC-32C、SHA-1、SHA-256,不支援 FULL_OBJECT。

日常更常撞到的是尺寸上限,它直接決定一次傳輸會不會成功。

桌面用戶端真正會撞到的 R2 上限(來自 Cloudflare 的 limits 與 multipart 文件,2026 年 9 月核對)
項目數值
單一物件最大尺寸5 TiB(精確為 4.995 TiB)
單次 PUT 最大尺寸5 GiB(精確為 4.995 GiB)
分段最小尺寸5 MiB(最後一段除外)
分段尺寸除最後一段外必須等大
單次上傳最大分段數10,000
物件鍵長度1,024 位元組
每帳戶 bucket 數1,000,000

把前兩列連著讀:超過約 5 GiB 就只能走分段上傳,因此只會整檔 PUT 的工具會在大影片上失敗,而且幾乎不會告訴你原因。

預簽名連結與三個邊界

R2 支援預簽名 URL,文件寫得很具體:AWS Signature Version 4,有效期 "1 second to 7 days (604,800 seconds)",支援 GET、HEAD、PUT、DELETE 四種方法。兩個限制最容易踩到:HTML 表單的 POST 分段上傳 "is not currently supported";預簽名 URL "cannot be used with custom domains",只對 S3 API 網域有效。

AnyStorage 在 Pro 產生預簽名的上傳與下載連結——要把單一物件交給不該拿到權杖的人時,這是最快的方式。S3 那一側的同一機制見預簽名連結說明。

公開 bucket 與 r2.dev

R2 可以把 bucket 公開在 Cloudflare 託管的 r2.dev 子網域上,而文件對它的定位毫不掩飾:透過 r2.dev 的公開存取 "is rate-limited and should only be used for development purposes",這個 endpoint "is intended for non-production traffic"。若要使用 WAF 自訂規則、快取、存取控制或 Bot Management,文件要求把 bucket 放在自訂網域後面。

所以 r2.dev 不是發布方案。一次性交付用預簽名連結,正式發布用自訂網域。

當問題其實出在 CORS

桌面用戶端不會送出瀏覽器的 preflight,這本身就是一種判斷方法:如果 AnyStorage 能列目錄、能下載,而網頁端不行,那麼憑證是對的,該懷疑的是 CORS 設定。

2026 年 9 月核對的 R2 CORS 文件定義了 AllowedOrigins、AllowedMethods、AllowedHeaders、ExposeHeaders 與 MaxAgeSeconds。來源必須 "must match exactly"——協定、主機、通訊埠都要一致,http://localhost:3000 與 https://localhost:3000 不是同一個。自訂標頭必須明確宣告:帶 x-user-id 這類標頭的請求 "should specify these headers as AllowedHeaders",官方的排查步驟也是 "make sure the rule's AllowedHeaders includes the blocked request's headers"。文件從未說 * 等於「任何標頭」,所以請逐一寫出。另一個陷阱是 MaxAgeSeconds:瀏覽器會快取 preflight 結果,改好的政策在快取過期前看起來仍然是壞的。個別錯誤訊息見 R2 CORS 錯誤解析。

R2 工具比較

操作 Cloudflare R2 bucket 的幾種方式(2026 年 9 月核對)
工具GUI掛載為磁碟Cloudflare R2 文件收錄Linux價格
AnyStorage有,桌面應用有,本機 WebDAV,免驅動未收錄有,AppImage 與 .deb免費方案 + 付費 Pro
rclone無,命令列有,需要 FUSE 或 WinFsp已收錄有免費開源
Cyberduck有,桌面應用無未收錄無免費開源
AWS CLI無,命令列無已收錄(aws CLI 頁)有免費
Cloudflare 控制台有,瀏覽器內無官方自帶僅瀏覽器免費

表格背後的取捨:

  • rclone 是這裡最強也最費工的一個。它是 Cloudflare 為 R2 收錄的唯一第三方工具,rclone mount 能給出真正的磁碟行為,代價是安裝 FUSE 或 WinFsp,再決定 --vfs-cache-mode,很多程式才願意往掛載點寫入。
  • Cyberduck 是帶 R2 連線設定檔的好用免費瀏覽器,不能掛載,也沒有 Linux 版。
  • AWS CLI 適合「事先講得清楚的複製」,不適合「在三層前綴底下找一個只記得一半名字的檔案」。控制台是建立 bucket、權杖與自訂網域的正確位置,也是搬檔案最慢的位置。
  • AnyStorage 位在瀏覽器與掛載工具之間;它沒有出現在 Cloudflare 的文件裡,那一列是刻意如實寫的。

把 R2 掛載成本機磁碟

有些程式只認路徑。AnyStorage 用一般 S3 API 與 R2 通訊,再把目前連上的所有儲存,透過跑在本機 http://127.0.0.1:3211 的 WebDAV 伺服器重新提供出來。沒有 macFUSE、沒有 WinFsp、沒有核心模組、不需要管理員權限:掛載交給系統內建的 WebDAV 用戶端,也就是 Finder 的「連接伺服器」、檔案總管的「對應網路磁碟機」,或 Nautilus / Dolphin 裡的 dav://。完整步驟在這裡。免費方案唯讀,Pro 可讀寫。

平台與安裝

0.2.25 於 2026 年 9 月 23 日發布,支援 macOS 11 以上、Windows 10 以上、Ubuntu 20.04 以上。Mac 上用 brew install --cask kilerd/tap/anystorage。免費方案支援兩個儲存連線。如果 R2 只是你多個儲存中的一個,可以從 S3 GUI 用戶端總覽,或 Linux 與 macOS 專頁開始。

常見問題

R2 支援預簽名 URL 嗎?

支援。Cloudflare 文件記錄了 SigV4 預簽名 URL,涵蓋 GET、HEAD、PUT、DELETE,有效期從 1 秒到 7 天(604,800 秒)。POST 表單上傳不支援;預簽名 URL 只能用於 S3 API endpoint,不能用於自訂網域。AnyStorage 在 Pro 可以產生。

為什麼我的 R2 CORS 設定沒有生效?

通常是三種情況之一:來源沒有完全一致(含協定與通訊埠);某個自訂請求標頭沒寫進 AllowedHeaders;瀏覽器還在依 MaxAgeSeconds 快取舊的 preflight 結果。文件從未宣稱 * 涵蓋任何請求標頭,所以要逐一列出。詳見 R2 CORS 錯誤解析。

R2 的 endpoint 與 region 要填什麼?

endpoint 是 https://<ACCOUNT_ID>.r2.cloudflarestorage.com,若 bucket 帶 jurisdiction,就用 eu、fedramp 或 us 變體。region 填 auto;文件說明空值與 us-east-1 同樣會被對應為 auto。

R2 需要開 path-style 嗎?

不需要。R2 從 2022 年 5 月起支援 virtual-hosted 形式,同時仍接受路徑定址,兩種設定都能用。真正必須開 path-style 的是自架的 MinIO。

不裝 FUSE 能把 R2 掛成磁碟嗎?

可以。AnyStorage 在 http://127.0.0.1:3211 上跑本機 WebDAV 伺服器,掛載由系統內建的 WebDAV 用戶端完成,不涉及 macFUSE 或 WinFsp。免費方案唯讀,Pro 可讀寫。