使用s3cmd 2.x 与 Cyberduck 管理在 DigitalOcean Spaces 对象存储中的数据

embedded/2024/9/24 12:31:21/

有很多用户在使用 DigitalOcean Spaces 对象存储的过程中,还没有找到一个合适的数据管理工具。其实目前有很多开源工具都可以使用,比如 s3cmd、Cyberduck、rclone、transmit5。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_IDAWS_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.1proxy.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: EXAMPLES7UQOTHDTF3GK4Secret Key: b8e1ec97b97bff326955375c5exampleDefault Region: USS3 Endpoint: nyc3.digitaloceanspaces.comDNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.n
yc3.digitaloceanspaces.comEncryption password: secure_passwordPath to GPG program: /usr/bin/gpgUse HTTPS protocol: TrueHTTP 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'

s3cmd的一些使用示例

由于s3cmd是一个命令行工具,所以我们在这里例举一些比较常用的命令,如果大家需要更详细的命令行案例可以查阅官方文档。

列出 Buckets和文件

列出(List )所有的 buckets

s3cmd ls

按顺序列出 buckets 中的文件

s3cmd ls s3://spacename s3://secondspace

列出所有 bucket 中的所有文件

s3cmd la --recursive

将文件上传到bucket

使用put命令将文件从本地计算机复制到存储桶。在所有这些命令中,都必须以斜杠为结尾。

上传一个文件

当你添加尾部斜杠时(如下例所示),将附加原始文件名。如果你省略斜杠,则文件将以新名称复制到存储桶中的path

s3cmd put file.txt s3://spacename/path/

给文件设置新名称

将文件放入存储桶后,你可以通过在路径末尾键入新名称来更改文件的名称,如下所示:

s3cmd put file.txt s3://spacename/newname.txt

上传多个文件

s3cmd put file1.txt file2.txt path/to/file3.txt s3://spacename/path/

将所有文件放在当前目录中

使用 *put将当前工作目录中的所有内容按顺序复制到你的存储桶中:

s3cmd put * s3://spacename/path/ --recursive

你可以通过添加 --acl-public 来一次性为所有文件设置公共权限,同样地,你可以使用 --add-header(如 --add-header=Cache-Control:max-age=86400)来设置元数据:

s3cmd put * s3://yourfolder --acl-public --add-header=Cache-Control:max-age=86400 --recursive

将文件保存到本地计算机

使用get命令将文件从存储桶复制到本地计算机。以下是三个常用的命令行。

获取一个文件

s3cmd get s3://spacename/path/to/file.txt

获取目录中的所有文件

要获取多个文件,s3 地址必须以斜杠结尾,并且命令结尾需要有--recursive

s3cmd get s3://spacename/path/ --recursive

以新名称保存文件

put命令一样,get命令可以给文件设置新的名字。

s3cmd get s3://spacename/file.txt newfilename.txt

将Cyberduck 链接到 DigitalOcean

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

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

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

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

以上便是本篇教程全部内容。如果你在使用 DigitalOcean 对象存储或其它服务的过程中遇到问题,可以联系 DigitalOcean 中国区独家战略合作伙伴卓普云。


http://www.ppmy.cn/embedded/92871.html

相关文章

【Redis】全局命令/内部编码/浅谈单线程模型

目录 前言 两个核心命令 GET和SET 全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构的内部编码 Redis的5中数据类型 Redis数据结构和内部编码 单线程架构 前言 Redis 提供了 5 种数据结构&#xff0c;理解每种数据结构的特点对于 Redis 开发运维⾮常重要&a…

计算机网络-CSP初赛知识点整理

历年真题 [2016-NOIP-普及-第3题] 以下不属于无线通信技术的是( ) A. 蓝牙 B. Wifi C. GPRS D. 以太网 [2015-NOIP-普及-第10题] FTP 可以用于( )。 A. 远程传输文件 B. 发送电子邮件 C. 浏览网页 D. 网上聊天 [2019-CSP-J-第1题] 中国的国家顶级域名是( ). A. .cn B. .ch C.…

视频美颜SDK与直播插件的实现原理及优化方案详解

今天&#xff0c;小编将深入探讨视频美颜SDK与直播插件的实现原理&#xff0c;并提供一些优化方案。 一、视频美颜SDK的实现原理 视频美颜SDK主要依赖于图像处理技术&#xff0c;借助实时滤镜、图像增强和人脸检测等算法&#xff0c;为用户提供动态的美颜效果。其核心实现原理…

大模型笔记5 Extractive QA任务评估

目录 Extractive QA任务评估 Extractive QA评测指标 precision, recall, f1 ROUGE 划分训练与评估数据集 token位置评估 单个token位置评估 输入label的token位置 预测token位置 评估 Wandb 共享机器同时登录 样本类别平衡 标记token label时对窗口进行筛选 训练…

JavaEE: 查看线程信息

示例用代码 public class Main {static class MyThread extends Thread {Overridepublic void run() {while (true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}}public st…

【ZooKeeper】ZooKeeper快速入门

1.ZooKeeper的概念 Zookeeper 是 Apache Hadoop 项目下的一个子项目&#xff0c;是一个树形目录服务。Zookeeper 翻译过来就是动物园管理员&#xff0c;它是用来管 Hadoop&#xff08;大象&#xff09;、Hive&#xff08;蜜蜂&#xff09;、Pig&#xff08;小猪&#xff09;的管…

如何在Chrome、Edge、360、Firefox等浏览器查看网站SSL证书信息?

在如今的网络环境中&#xff0c;保障网络安全、数据安全尤其重要&#xff0c;市面上大部分网站都部署了SSL证书以实现HTTPS加密保护数据传输安全以及验证网站身份&#xff0c;确保网站安全可信。那么如何查看网站的SSL证书信息&#xff1f;接下来&#xff0c;我们将详细介绍如何…

[算法]第一集 递归(未完待续)

递归啊递归&#xff0c;说简单简单&#xff0c;说难难。 首先我们要知道 一、什么是递归&#xff1f; 我们再C语言和数据结构里都用了不少递归&#xff0c;这里就不多详细介绍。 递归简单来说就是函数自己调用自己的情况 二、为什么要用递归呢&#xff1f; 本质来说其实就…