当前位置: 首页 > news >正文

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

有很多用户在使用 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 中国区独家战略合作伙伴卓普云。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 全网最适合入门的面向对象编程教程:30 Python的内置数据类型-object根类
  • 缓存策略自定义:Laravel应用性能优化秘籍
  • 虚拟机(CentOS7)安装jenkins
  • ubuntu安装nginx以及php的部署
  • STL—vector—模拟实现【深度理解vector】【模拟实现vector基本接口】
  • WebLogic: CVE-2020-14882/14883【getshell】
  • C语言自定义类型结构体与位段超详解
  • 如果一台Riscv FreeBSD系统没有pkg怎么办?
  • 基于深度学习的自动化模型设计
  • VS Code设置C++编译器路径
  • 《巴菲特的伯克希尔崛起》
  • 学Python可少不了项目练手,这8个小项目有趣又实用,小白也能做出来_python练手项目,python教程
  • 域环境的搭建 内网学习不会搭建环境???
  • 智慧水务项目(一)django(drf)+angular 18 通过pycharm建立项目
  • 计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 3.7、@ResponseBody 和 @RestController
  • FineReport中如何实现自动滚屏效果
  • Javascript编码规范
  • js作用域和this的理解
  • npx命令介绍
  • v-if和v-for连用出现的问题
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于webpack 的 vue 多页架构
  • 驱动程序原理
  • 译有关态射的一切
  • FaaS 的简单实践
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​数据链路层——流量控制可靠传输机制 ​
  • # 数仓建模:如何构建主题宽表模型?
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $jQuery 重写Alert样式方法
  • (3) cmake编译多个cpp文件
  • (5)STL算法之复制
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)Activiti-modeler中文支持
  • (十五)使用Nexus创建Maven私服
  • (四)Controller接口控制器详解(三)
  • (学习日记)2024.01.09
  • (一)基于IDEA的JAVA基础12
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)甲方乙方——赵民谈找工作
  • .Family_物联网
  • .Net 6.0--通用帮助类--FileHelper
  • .NET Core 2.1路线图
  • .net core 6 集成 elasticsearch 并 使用分词器