介绍
DigitalOcean Spaces 是一个物体存储服务,旨在使存储和服务大量数据变得简单、成本高效. 如果您以前依赖了其他物体存储服务,则将数据迁移到 Spaces 可能是您的首要任务之一。
在本指南中,我们将介绍如何使用 rclone
实用程序将数据从亚马逊的S3区块存储服务迁移到DigitalOcean Spaces。
创建 API 密钥和查找桶属性
在我们开始安装和配置rclone
以将我们的对象复制到Spaces之前,我们需要一些关于我们的Amazon S3和DigitalOcean Spaces帐户的信息。
生成 DigitalOcean Spaces API 密钥并找到 API 终端
要创建 DigitalOcean Spaces API 密钥,请遵循我们 如何创建 DigitalOcean Space 和 API 密钥教程的创建访问密钥
部分。
保存访问密钥ID和秘密密钥,以便我们可以配置rclone
来访问我们的帐户。
接下来,我们需要找到合适的API终端点. 如果您已经创建了一个想要传输对象的DigitalOcean Space,您可以在DigitalOcean控制面板中查看DigitalOcean的终端点,选择空间并查看 设置选项卡:
如果您尚未创建空间,则rclone
可以自动创建您选择的空间,作为复制过程的一部分。在这种情况下,终端将是您想要使用的空间区域,然后是.digitaloceanspaces.com
。
创建 Amazon S3 API 密钥
如果您还没有具有管理 S3 资产权限的 Amazon API 密钥,您将需要现在生成这些密钥,在您的 AWS 管理控制台中,单击您的帐户名称,并从下载菜单中选择 ** 我的安全凭据**:
接下来,在左侧菜单中选择 用户,然后单击 添加用户按钮:
输入 用户名,并在 ** Access 类型** 部分选择 Programmatic access. 点击 Next: Permissions 按钮继续:
在下面的页面上,选择顶部的 ** 直接附加现有策略** 选项,然后在 ** 策略类型** 过滤器中键入 ** s3read**。
查看下一页的用户详细信息,然后在准备时点击创建用户
按钮:
在最后一页,你会看到你的新用户的身份证件. 点击秘密访问密钥
列下面的显示
链接查看身份证件:
将 Access 密钥 ID和 Secret 密钥复制到安全的地方,以便您可以配置rclone
以使用这些凭据。
查找 Amazon S3 桶区域和位置限制
现在,我们需要找到我们S3桶的区域和位置限制值。
在顶部菜单中单击服务
并在出现的搜索栏中键入S3
。
我们需要寻找我们想要转移的桶的区域名称,该区域将显示在桶名称旁边:
我们需要找到与我们的桶区域相关的区域字符串和匹配的位置限制。 在 亚马逊的S3区域图表中寻找您的桶区域名称,以找到合适的区域和位置限制字符串。
现在我们已经从我们的亚马逊帐户中获得了相应的信息,我们可以使用这些信息安装和配置rclone
。
在本地计算机上安装 rclone
您现在已经准备好在本地计算机上安装 rclone
。
访问项目网站的 下载部分,以查找为不同平台编译的实用程序的二进制文件。
一旦您已下载到您的计算机的rclone
zip 文件,请遵循符合您的平台的下面的部分。
Linux 的
在我们可以提取档案之前,我们需要确保unzip
实用程序可用。
如果您正在运行 Ubuntu或 Debian,您可以通过键入更新本地包索引并安装unzip
:
1sudo apt-get update
2sudo apt-get install unzip
如果您正在运行 CentOS或 Fedora,您可以通过键入以下方式安装unzip
:
1sudo yum install unzip
安装了unzip
,导航到您下载了rclone
zip 文件的目录:
1cd ~/Downloads
接下来,解开档案并进入新目录:
1unzip rclone*
2cd rclone-v*
从这里,我们可以将二进制复制到 /usr/local/bin
目录,使其在整个系统中可用:
1sudo cp rclone /usr/local/bin
接下来,我们可以将手动页面添加到系统中,以便我们可以轻松地获得对命令语法和可用的选项的帮助. 确保我们需要的本地手动目录可用,然后复制 rclone.1
文件:
1sudo mkdir -p /usr/local/share/man/man1
2sudo cp rclone.1 /usr/local/share/man/man1
更新人
数据库以在系统中添加新的手动页面:
1sudo mandb
最后,我们可以创建配置目录并打开配置文件来定义我们的 S3 和 Spaces 凭证:
1mkdir -p ~/.config/rclone
2nano ~/.config/rclone/rclone.conf
这将打开你的文本编辑器与一个新的空格文件. 跳到 定义你的对象存储帐户的部分继续。
马克思
如果您正在运行 macOS,请先将终端导航到您下载了rclone
zip 文件的目录:
1cd ~/Downloads
接下来,解开文件并移动到新的目录级别:
1unzip -a rclone*
2cd rclone-v*
接下来,请确保 /usr/local/bin
目录可用,然后将 rclone
二进制移动到里面:
1sudo mkdir -p /usr/local/bin
2sudo cp rclone /usr/local/bin
最后,我们可以创建配置目录并打开配置文件来定义我们的 S3 和 Spaces 凭证:
1mkdir -p ~/.config/rclone
2nano ~/.config/rclone/rclone.conf
这将打开你的文本编辑器与一个新的空格文件. 跳到 定义你的对象存储帐户的部分继续。
窗口
如果您正在运行 Windows,请从 Windows 文件浏览器中的下载目录开始导航,选择rclone
zip 文件,然后右键单击。在出现的背景菜单中,单击 提取所有...:
按照提示,从 zip 档案中提取文件。
rclone.exe
实用程序必须从命令行运行. 打开一个新的 Command Prompt(cmd.exe
程序)窗口,点击左下角的 Windows 按钮,键入 cmd,然后选择 Command Prompt。
在内部,导航到您通过键入提取的rclone
路径:
1cd "%HOMEPATH%\Downloads\rclone*\rclone*"
列出目录内容以验证您在正确的位置:
1dir
1[secondary_label Output]
210/23/2017 01:02 PM <DIR> .
310/23/2017 01:02 PM <DIR> ..
410/23/2017 01:02 PM 17 git-log.txt
510/23/2017 01:02 PM 296,086 rclone.1
610/23/2017 01:02 PM 16,840,192 rclone.exe
710/23/2017 01:02 PM 315,539 README.html
810/23/2017 01:02 PM 261,497 README.txt
9 5 File(s) 17,713,331 bytes
10 2 Dir(s) 183,296,266,240 bytes free
您需要在此目录中,每当您想要使用rclone.exe
命令。
<$>[注]
注: 在 macOS 和 Linux 上,我们通过键入rclone
来运行该工具,但在 Windows 上,该命令被称为rclone.exe
。
接下来,我们可以创建配置目录并打开配置文件来定义我们的 S3 和 Spaces 凭证:
1mkdir "%HOMEPATH%\.config\rclone"
2notepad "%HOMEPATH%\.config\rclone\rclone.conf"
这将打开你的文本编辑器与一个新的空格文件。继续学习如何在配置文件中定义你的对象存储帐户。
配置 S3 和空间帐户
我们可以在新文件中定义我们的 Amazon S3 和 DigitalOcean Spaces 配置,以便rclone
能够在我们两个帐户之间管理内容。
让我们先定义我们的 S3 帐户,将下列部分粘贴到配置文件中:
1[label ~/.config/rclone/rclone.conf]
2[s3]
3type = s3
4env_auth = false
5access_key_id = aws_access_key
6secret_access_key = aws_secret_key
7region = aws_region
8location_constraint = aws_location_constraint
9acl = private
在这里,我们定义了一个新的rclone``远程
称为s3
。我们将类型
设置为s3
,以便rclone
知道与远程存储资源进行交互和管理的适当方式。
接下来,我们将access_key_id
和secret_access_key
变量分别设置为我们的 S3 访问密钥和秘密密密钥。
我们根据我们在 亚马逊区域图中发现的 S3 桶的属性设置了区域和位置限制。
现在,我们可以为我们的 DigitalOcean Spaces 配置定义类似的部分。
1[label ~/.config/rclone/rclone.conf]
2. . .
3
4[spaces]
5type = s3
6env_auth = false
7access_key_id = spaces_access_key
8secret_access_key = spaces_secret_key
9endpoint = nyc3.digitaloceanspaces.com
10acl = private
在本节中,我们正在定义一个名为空间
的新远程计算机。 再次,我们将类型
设置为s3
,因为Spaces提供了兼容S3的API。
接下来,我们将access_key_id
和secret_access_key
变量设置为我们DigitalOcean帐户所生成的值。
保存并关闭文件,当你完成。
在 macOS 和 Linux 上,请确保锁定配置文件的权限,因为我们的身份证在里面:
1chmod 600 ~/.config/rclone/rclone.conf
在 Windows 上,除非明确授权,否则不允许非管理员使用权限,因此不需要手动调整访问权限。
从 S3 复制对象到空间
现在我们的配置已经完成,我们已经准备好转移我们的文件。
开始检查配置的rclone
远程设置:
1rclone listremotes
1[secondary_label Output]
2s3:
3spaces:
我们定义的两个部分都显示。
我们可以通过要求rclone
列出与s3
远程连接的目录
来查看可用的S3桶(请确保在远程名称的末尾添加结肠):
1rclone lsd s3:
1[secondary_label Output]
2 -1 2017-10-20 15:32:28 -1 source-of-files
上面的输出表明,在我们的 S3 帐户中发现了一个桶,称为文件源
。
如果您已经创建了一个数字海洋空间,您可以重复程序来查看您的空间:
1rclone lsd spaces:
1[secondary_label Output]
2 -1 2017-10-25 19:00:35 -1 existing-space
要查看 S3 桶或 DigitalOcean Space 的内容,您可以使用树
命令. 输入远程名称,然后是列出的目录
名称(桶或空间名称):
1rclone tree s3:source-of-files
1[secondary_label Output]
2/
3├── README.txt
4├── demo_dir
5│ ├── demo1
6│ └── demo2
7└── media
8 ├── Social Rebrand Presentation 032815.ppt
9 ├── TechnicLauncher.jar
10 ├── nda_template.docx
11 ├── textfile.txt
12 └── the_mother_of_all_demos.mp4
13
142 directories, 8 files
当你准备好了,你可以将文件从你的S3桶复制到一个DigitalOcean空间通过键入:
1rclone sync s3:source-of-files spaces:dest-of-files
如果您之前尚未创建您选择的空间,则rclone
将尝试为您创建一个具有所提供的名称的空间,如果所提供的名称已经被另一个帐户使用,或者如果该名称不符合DigitalOcean Spaces的命名要求(仅有字母、数字和表格)。
假设一切顺利,rclone 将开始从 S3 复制对象到 Spaces。
当转移完成时,您可以通过使用树
子命令视觉检查对象是否已转移:
1rclone tree spaces:dest-of-files
1[secondary_label Output]
2/
3├── README.txt
4├── demo_dir
5│ ├── demo1
6│ └── demo2
7└── media
8 ├── Social Rebrand Presentation 032815.ppt
9 ├── TechnicLauncher.jar
10 ├── nda_template.docx
11 ├── textfile.txt
12 └── the_mother_of_all_demos.mp4
13
142 directories, 8 files
要进行更强大的验证,请使用检查
子命令来比较两种远程对象:
1rclone check s3:source-of-files spaces:dest-of-files
1[secondary_label Output]
22017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 0 differences found
32017/10/25 19:51:36 NOTICE: S3 bucket dest-of-files: 2 hashes could not be checked
这将比较每个对象的哈希值在两种远程中。你可能会收到一个信息,说明某些哈希无法进行比较。在这种情况下,你可以重新启动命令只大小
旗(仅根据文件大小进行比较)或下载
旗(从两种远程下载每个对象进行本地比较),以验证传输完整性。
结论
在本指南中,我们涵盖了如何将对象从 Amazon S3 转移到 DigitalOcean Spaces. 我们为这两个服务创建了 API 凭证,在本地计算机上安装并配置了rclone
实用程序,然后将所有对象从 S3 桶复制到 DigitalOcean Space。
rclone
客户端可用于许多其他对象存储管理任务,包括上传或下载文件,在本地文件系统上安装桶,以及创建或删除额外桶。