跳到主要内容
CivoCloudManager

在 macOS 上通过 S3 浏览 Civo Object Storage。

区域 endpoint,s3cmd、rclone 和 AWS CLI 的可用配置,以及原生客户端有什么不一样。

Civo Object Storage 说 S3,所以只要两件事对了,几乎任何 S3 客户端都能连上:存储所在区域的 endpoint,以及在同一个区域里创建的凭据。Civo 自己的文档走了一遍 s3cmd,剩下的工具留给你。这页直接给出 s3cmd、rclone 和 AWS CLI 的原始配置,然后讲 CivoCloudManager 走的那条路:endpoint 和访问密钥都直接从 Civo API 读出来,没有什么要手动填的。

为 Civo 配置一个 S3 客户端

  1. 01

    找到你所在区域的 endpoint。

    Civo 的 Object Store endpoint 按 https://objectstore.<region>.civo.com 构造,区域代码小写,所以伦敦的存储在 https://objectstore.lon1.civo.com,法兰克福的在 https://objectstore.fra1.civo.com。每个存储也会在 Civo 控制台显示自己的 endpoint,并在 REST API 的 objectstore_endpoint 字段里返回。按 Civo 的区域功能总览,Object Store 在 LON1、FRA1、NYC1 和 MUM1 提供,PHX1 没有。

  2. 02

    在同一个区域里创建凭据。

    每个 Civo Object Store 都是私有的,需要一个 access key ID 和一个 secret key。在 Civo 控制台的 Object Stores 下创建凭据时,把区域选择器切到存储所在的区域,或者用 Civo CLI。命令 civo objectstore credential export -a <access_key> 会把这一对打印成 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION 和 AWS_HOST,可以直接粘进 shell。

  3. 03

    s3cmd:host_base 和 host_bucket。

    ~/.s3cfg 的 [default] 下设置 host_base = objectstore.fra1.civo.com、host_bucket = objectstore.fra1.civo.com、bucket_location = fra1、use_https = True、signature_v2 = False,再加上 access_keysecret_key。把 host_bucket 设成和 host_base 相同的主机名,s3cmd 就会留在 path style 寻址上,那也正是 Civo 应答的方式。之后 s3cmd ls 列出你的存储,s3cmd ls s3://STORENAME 列出其中一个,s3cmd put file.tar s3://STORENAME/backups/ 上传,s3cmd get -r s3://STORENAME/backups/ 把整个前缀拉下来。不写配置文件的话,这两个值就作为 --host=--host-bucket= 写在命令行上。

  4. 04

    rclone:一个 type 为 s3、provider 为 Other 的 remote。

    运行 rclone config 选 s3,或者直接把配置块写进 ~/.config/rclone/rclone.conf:在 [civo] 下设置 type = s3、provider = Other、env_auth = false,填上凭据里的 access_key_idsecret_access_key,再加 region = fra1、endpoint = https://objectstore.fra1.civo.com 和 acl = private。之后 rclone lsd civo: 列出存储,rclone ls civo:STORENAME 列出对象,rclone copy ./dir civo:STORENAME/dir -P 带进度把一个目录同步上去,rclone ncdu civo:STORENAME 给你一个文本模式的浏览器。同样的设置也可以写成一次性参数:--s3-provider Other --s3-endpoint https://objectstore.fra1.civo.com --s3-region fra1。

  5. 05

    AWS CLI:每条命令都带 --endpoint-url。

    AWS CLI 不需要任何 Civo 专用插件,只要每条命令带上 endpoint:aws s3 ls --endpoint-url https://objectstore.fra1.civo.com,然后是 aws s3 ls s3://STORENAME --endpoint-url ... 和 aws s3 cp file.tar s3://STORENAME/ --endpoint-url ...。凭据来自 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,或者一个命名 profile,AWS_DEFAULT_REGION 要设成 Civo 的区域代码,这样 Signature V4 的作用域才对得上。新版本有个脚注:AWS CLI 2.23 及以后默认给上传加上 CRC64NVME 校验和,不是每个 S3 兼容 endpoint 都接受,所以如果 put 因为校验和报错,设置 AWS_REQUEST_CHECKSUM_CALCULATION=when_required 和 AWS_RESPONSE_CHECKSUM_VALIDATION=when_required。

会白白花掉一小时的坑:密钥绑定在一个区域上

Civo 的文档用两句很容易被扫过去的话说明了这点:Object Store 是区域相关的,管理和访问 Object Store 的凭据绑定在创建它们的那个区域。控制台停在 FRA1 时创建的密钥,拿去认证 LON1 的 endpoint 是不会通过的,哪怕是同一个账户、同一份账单。症状是一个看起来像 secret 打错了的认证或签名错误,于是自然反应是重新生成密钥,结果在同一个错误的区域里又造了一把。先看区域选择器,在存储旁边创建凭据,之后再去怀疑配置。

命令行覆盖不到的部分

写脚本、做备份、跑 CI,s3cmd、rclone 和 AWS CLI 就是对的答案,这里没有任何东西要取代它们。它们给不了的是对一个存储的直观感受:一棵目录树、一眼看到的大小、一片能拖出来的选择。Cyberduck 或 Transmit 这类通用的 Mac S3 客户端填上了这个空档,但它们对 Civo 一无所知,所以你要自己填 endpoint、按存储粘两把密钥,凭据每轮换一次就手动同步一次。

应用那条路:根本没有 endpoint 要填

CivoCloudManager 用你的 Civo API key 认证一次,从 Civo REST API v2 读取 Object Store 列表,那份列表里已经带着每个存储的 endpoint 和关联凭据。S3 客户端就是照着它构建的,所以没有 endpoint 输入框,不用粘密钥,也没有配置文件。S3 这一层是纯 Swift:AWS Signature V4 用 CryptoKit 的 HMAC-SHA256 计算,不用 AWS SDK,也不套 Electron 壳。它做的是带 continuation token 的 ListObjects v2、基于公共前缀的面包屑导航、多选,以及带实时进度的递归文件夹下载。关于它的形状,说句实在的:这个浏览器只读取和下载。上传和删除仍然归 s3cmd 或 rclone。应用需要 macOS 15 或更新版本。

访问密钥放在 Touch ID 后面,而不是某个 dotfile 里

就算你继续用 CLI,这一点也值得装一个应用。一套能用的 s3cmd 配置意味着 secret key 明文躺在 ~/.s3cfg 里,rclone.conf 和 ~/.aws/credentials 同理。任何以你的用户身份运行的进程都能读到这三个文件,任何遍历你主目录的东西也能。CivoCloudManager 把 Civo API key 放在 macOS Keychain,在界面里查看某个 Object Store 的 secret access key 要先过 Touch ID 或者系统密码。边界很明显,也得说出来:你把密钥复制到终端里的那一刻,它又变回一个明文文件了。

用不到的存储可以暂停,之后再恢复

闲置的存储仍然按分配的容量计费。暂停会把每个对象复制进一个名为 civo-cloud-manager 的中央 Object Store,数据放不下就先把保险库扩容,然后把复制过去的键名和大小与源逐一比对,只有对得上才删除原始存储。账单上的这一项就消失了。恢复会用相同的名称和相同的凭据重建存储,把对象拷回去,再校验一次键名和大小,然后清空保险库。同时最多搬四个对象。老实说清楚边界:校验比的是名称和大小,不是内容哈希;传输会把整个对象缓冲在内存里;远端 manifest 是在源被删除之后才写的,本地 manifest 作为兜底。

哪个客户端适合哪种活

四个都在同一个 endpoint 上说同一套 S3 API。差别在于配置放在哪里、密钥最后落在哪里,以及你能看到什么。

任务 s3cmdrcloneAWS CLICivoCloudManager
Endpoint 配置 ~/.s3cfg 里的 host_base 和 host_bucketremote 里的 endpoint每条命令带 --endpoint-url从 Civo API 读取
secret key 最后落在哪里 ~/.s3cfg,明文rclone.conf,明文~/.aws/credentials,明文macOS Keychain,查看要过 Touch ID
可视化浏览一个存储 没有rclone ncdu,文本模式没有有,带面包屑的文件浏览器
上传和删除对象 支持支持支持浏览器里没有
递归下载文件夹 s3cmd get -rrclone copyaws s3 cp --recursive支持,带进度
暂停闲置存储以停止计费 不支持不支持不支持支持,保险库,删除前先校验
能在 CI 里跑 不能,它是 Mac 应用

通过 S3 用 Civo Object Storage,逐个回答

Civo Object Storage 的 endpoint 地址是什么?
Civo 的 Object Store endpoint 遵循 https://objectstore.<region>.civo.com 这个模式,区域代码小写,例如伦敦是 https://objectstore.lon1.civo.com,法兰克福是 https://objectstore.fra1.civo.com。endpoint 取决于存储创建时所在的区域。每个存储也会在 Civo 控制台显示自己的 endpoint,并在 Civo REST API 的 objectstore_endpoint 字段里返回。
Civo Object Storage 能用 s3cmd 或 rclone 吗?
两个都能用,AWS CLI 和任何其他 S3 兼容客户端也能。s3cmd 这边,把 ~/.s3cfg 里的 host_basehost_bucket 设成区域主机名,例如 objectstore.fra1.civo.com,再填上 access_keysecret_key。rclone 这边,建一个 type = s3、provider = Other、endpoint = https://objectstore.fra1.civo.com 的 remote,配同一对密钥。AWS CLI 这边,每条命令加上 --endpoint-url https://objectstore.fra1.civo.com
Civo Object Storage 的访问密钥为什么用不了?
常见原因是区域。Civo 明确说明 Object Store 是区域相关的,凭据绑定在创建它们的那个区域,所以在 FRA1 创建的密钥拿去认证 LON1 的 endpoint 不会通过,哪怕属于同一个账户。创建凭据时,把控制台切到存储所在的区域。第二个常见原因是客户端压根没收到 endpoint,或者 s3cmd 的 host_bucket 还停在默认值,于是请求发去了 Amazon 而不是 Civo。
Mac 上有 Civo Object Storage 的图形界面吗?
CivoCloudManager 是原生 macOS 应用,需要 macOS 15 或更新版本,在 Mac App Store 上架,而且它认识 Civo:每个存储的 endpoint 和访问密钥都从 Civo API 读取,没有什么要配置的。它用面包屑浏览,能下载单个文件、一批多选,或者整个文件夹递归下载,上传和删除仍然留给命令行。Cyberduck 或 Transmit 这类通用 S3 客户端也能连 Civo,前提是你自己填 endpoint 并按存储粘上两把密钥。
暂停会对我在 Civo Object Store 里的数据做什么?
暂停会把每个对象复制进你自己 Civo 账户里一个名为 civo-cloud-manager 的中央 Object Store,把复制过去的键名和大小与源比对,然后才删除原始存储,让它不再产生费用。恢复会用相同的名称和相同的凭据重建存储,把对象拷回去,并在清空保险库之前再次校验键名和大小。数据始终没有离开你的 Civo 账户,校验按名称和大小进行,不是内容哈希。

跳过 endpoint 配置。

CivoCloudManager 从你自己的 Civo 账户读取 endpoint 和访问密钥,所以存储是直接打开的,不需要一个配置文件。菜单栏档位免费,完整仪表盘在 Mac App Store 一次性买断。

在 Mac App Store 下载

需要 macOS 15 (Sequoia) 或更新版本。

返回首页