400 800 3155
主页 教程 使用s3cmd 2.x 与 Cyberduck 在 DigitalOcean Spaces 对象存储中的管理数据

有很多用户在使用 DigitalOcean Spaces 对象存储的过程中,还没有找到一个合适的数据管理工具。其实目前有很多开源工具都可以使用,比如 s3cmd、Cyberduck、rclonetransmit5。Cyberduck 提供了直观的图形用户界面,而 s3cmd 2.x 则擅长于批处理和自动化任务。假设您每天都需要将本地备份文件上传到 Space,并删除超过30天的旧备份。你可以使用 Cyberduck 手动检查备份文件是否已正确上传。然后,编写一个 s3cmd 脚本,该脚本连接到 Space,查找并删除超过30天的旧备份文件。

这次我们将介绍如何在 DigitalOcean Spaces 上配置和使用他们。

s3cmd 是一个免费且开源的命令行工具,它允许用户通过命令行界面与Amazon S3存储服务以及其他兼容S3协议的云存储服务进行交互。

Cyberduck 也是一个免费开源的跨平台云存储服务聚合客户端,支持多种协议,包括FTP、SFTP、WebDAV、Amazon S3、Google Storage、Windows Azure、Rackspace Cloud Files 以及 Google Docs 等。它提供了一个简单的图形用户界面,允许用户通过拖放方式轻松地上传和下载文件,同时支持各种快捷键操作,使得文件管理变得简单高效。Cyberduck 的界面设计直观,操作简便,适合各种水平的用户使用。

DigitalOcean Spaces 对象存储是一种与 S3 兼容的对象存储服务。Spaces 存储桶可让你存储和提供大量数据,其内置 CDN 可最大限度地缩短页面加载时间并提高性能。所以两个工具都可以用于 Spaces 对象存储上。

准备工作

要将 s3cmd 与 DigitalOcean Spaces 结合使用,你需要:

  • s3cmd 版本 2.0.0+ 或更高版本:你可以使用 s3cmd --version 检查你的版本。来自软件包管理器的版本可能已过时,因此建议使用 s3cmd 下载页面 获取最新版本。Homebrew 用户可以使用命令 brew install s3cmd 安装最新版本。
  • Spaces 存储桶的访问密钥:要生成这些密钥,请访问 DigitalOcean 控制面板中的 API 页面
  • 下载 Cyberduck:访问 Cyberduck 的官方网站下载并安装适合你操作系统的版本。

初始化配置s3cmd

默认情况下,s3cmd 将其配置文件 .s3cfg 存储在运行配置命令的用户的主目录中。.s3cfg 是一个键/值对的纯文本文件,创建后可直接编辑。

运行命令时,s3cmd 使用其默认配置文件中设置的选项。你可以通过在运行的每个命令后附加 -c ~/path/to/config/file 来指定不同的配置。

如果 DigitalOcean 是您使用 s3cmd 连接的主要或唯一提供商,并且你不想每次使用 s3cmd 时都指定其配置文件,请使用以下命令配置默认的 ~/.s3cfg 文件:

s3cmd --configure

如果你已将 s3cmd 与其他服务一起使用,则可以通过添加 -c 标志并提供文件名来创建备用配置文件。配置文件将在你发出命令的目录中创建,因此如果你希望在其他位置创建它,请指定路径。

输入访问密钥类似于AWS的AccessKey和Secret Key

脚本首先要求输入访问密钥和密钥。如果你还没有密钥,可以通过访问控制面板的 API 页面为 s3cmd 生成一组密钥。

输入你的密钥,然后接受美国作为默认区域,因为区域信息与 DigitalOcean 无关。如果你愿意,可以使用环境变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 来存储一组密钥。

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key []: EXAMPLE7UQOTHDTF3GK4
Secret Key []: exampleb8e1ec97b97bff326955375c5
Default Region [US]:

输入 DigitalOcean 端点

接下来,输入 DigitalOcean Spaces 端点。Spaces 端点命名模式为 <region>.digitaloceanspaces.com,例如 nyc3.digitaloceanspaces.com。使用存储桶所在区域的端点。

Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: nyc3.digitaloceanspaces.com

下一个提示要求输入 URL 模板以访问你的存储桶。由于 Spaces 支持基于 DNS 的端点 URL,因此你可以使用变量 `%(bucket)s` 来代替存储桶的名称。输入以下模板格式,格式与所写完全相同:`%(bucket)s.nyc3.digitaloceanspaces.com`。同样,如果你的存储桶位于其他区域,你需要更改此格式。

Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars c
an be used if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket []: %(bucket)s.nyc3.digitaloceanspaces.com
 

可选择项:设置加密密码

下一个提示是用于设置一个可选的加密密码。与仅在传输过程中保护文件的 HTTPS 不同,GPG 加密可以防止他人在文件传输和存储在 DigitalOcean 上时读取文件。现在设置密码不会自动加密对象,它只是使以后可以使用加密功能。无需特殊需求,一般可以跳过这一步。

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
 

下一个提示要求输入 GPG 程序的路径。在 Linux 上,你可以按 ENTER 键接受默认路径。如果你在 macOS 上按照这些说明进行操作,可能需要使用 Homebrew(brew install gpg)安装 GPG。然后,你可以使用 which gpg 找到 GPG 的路径。

Path to GPG program [/usr/bin/gpg]:

使用 HTTPS 连接

下一个提示要求使用 HTTPS 协议。HTTPS 可以保护数据在传输过程中不被读取。

由于 DigitalOcean Spaces 不支持未加密的传输,所以你必须使用 HTTPS。按 ENTER 键接受默认设置即可。

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: Yes

可选择项:设置代理服务器

最后一个提示是用于设置 HTTP 代理服务器。如果你的网络需要代理,请输入其 IP 地址或域名,不包括协议,例如 203.0.113.1 或 proxy.example.com。如果你不使用代理,请按 ENTER 键跳过此步骤。

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:

确认、测试和保存设置

在提示输入 HTTP 代理服务器名称后,配置脚本会提供使用的值的相关摘要,然后提供测试这些值的机会:

New settings:
 Access Key: EXAMPLES7UQOTHDTF3GK4
 Secret Key: b8e1ec97b97bff326955375c5example
 Default Region: US
 S3 Endpoint: nyc3.digitaloceanspaces.com
 DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.n
yc3.digitaloceanspaces.com
 Encryption password: secure_password
 Path to GPG program: /usr/bin/gpg
 Use HTTPS protocol: True
 HTTP Proxy server name:
 HTTP Proxy server port: 0
Test access with supplied credentials? [Y/n] Y

测试成功完成后,输入Y保存设置:

Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)
Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)
Save settings? [y/N] Y

如果测试失败或你选择 N,你将有机会重试配置。保存配置后,你会收到其位置的确认。

Configuration saved to '/home/sammy/nyc3'

将Cyberduck 链接到 DigitalOcean

要从 Cyberduck 连接到 DigitalOcean,请单击打开连接图标,然后选择Amazon S3

选择了 Amazon S3 后,它将打开一个新窗口:

服务器一栏,填写区域,例如nyc3digitaloceanspaces.com。然后分别在访问密钥 ID密码字段中输入你的访问密钥和密钥。填写完毕后,选择“connect”

Cyberduck 的使用相当简单,你可以在里面点击“Action”按钮,然后选择新建文件夹、上传文件等操作。这个工具相比 s3cmd,更适合日常使用。如果需要批量处理数据,那建议还是使用s3cmd。

以上便是本篇教程全部内容。如果你在使用 DigitalOcean 对象存储或其它服务的过程中遇到问题,可以联系我们。

最新发布

相关阅读