如何使用复制功能管理备份到云的文件

介绍

Duplicacy是一个跨平台的备份工具,提供一系列功能 - 包括增量备份,同时备份和客户端加密 - 旨在简化将数据备份到云的过程。Linux版本的CLI(命令行接口)免费用于个人使用,但需要商业用户付费的许可证。

基于https://github.com/gilbertchen/duplicacy/wiki/Lock-Free-Deduplication的想法,Duplicacy旨在安全地管理各种云存储服务的备份.当Duplicacy客户端创建和存储新块时,使用相同的存储桶的其他客户端可以看到该块已经存在,因此不会再上传。

本教程提供了一个高层次的概述如何安装CLI版本的重复性,并使用它来管理一个典型的数据备份流程与DigitalOcean Space. 我们还将展示如何备份一个共享库从多个Dropplets到同一个空间,以及如何备份快照到多个空间,以获得更大的数据安全性。

前提条件

要跟随这个教程,你需要:

您可以随心所欲地命名您的服务器,但要保持清晰,他们将在本教程中被称为 server-01server-02

  • Two DigitalOcean Spaces

有了这些先决条件,您已经准备好安装 Duplicacy。

安装重复性

最新的 Duplicacy CLI 版本可以从 Duplicacy GitHub 存储库下载(不需要个人用户的许可证)。

在 server-01 和 server-02 上运行以下命令,将 Duplicacy 下载到每个命令中(取代最新版本的下载链接):

1sudo wget -O /opt/duplicacy https://github.com/gilbertchen/duplicacy/releases/download/v2.0.10/duplicacy_linux_x64_2.0.10

接下来,创建下载位置与在 `/usr/local/bin 中新目录之间的象征性链接:

1sudo ln -s /opt/duplicacy /usr/local/bin/duplicacy

最后,使重复性可执行:

1sudo chmod 0755 /opt/duplicacy

重复性现在应该安装在您的每一个Dropplets上,您现在已经准备好配置它以使用您的空间。

初始化您的存储库和配置重复性

Duplicacy 备份来自目录级别的数据,所以在您可以开始上传文件到您的空间之前,它必须与您的两个Dropplets的特定目录或存储库相关联。

init命令接受以下语法:

1duplicacy init repository_id s3://region@endpoint/space_name
  • repository_id: 这是 Duplicacy 使用的标签来区分不同的存储库。 如果您计划从多个来源备份相同的存储库(正如我们将在本教程的下一步中所做的),存储库 ID 应该在两个Dropplets上相同
  • 区域: 区域是您的Dropplets所在的区域的名称
  • endpoint: 您的空间的终端位置是服务器侧 Web API 使用的静态位置,以指定某些资源的位置。 对于 DigitalOcean Spaces,终端点将是由 digaloitcepanspaces.com 随后的区域。 digaloitcepaces.com,如在 nyc3.digaloitcepaces.com

如果您希望您的备份进入您的空间中的特定文件夹,请在运行init命令时添加文件夹的名称,然后添加您的空间的名称。

1duplicacy init repository_id s3://region@endpoint/space_name/folder_name/

一旦你掌握了这些细节,你就可以用mkdir命令在每一个Dropplets上创建一个存储库目录,然后用cd导航到你的新存储库:

1mkdir project-repository
2cd project-repository/

使用「project-repository/」作为工作目录,在 server-01上运行以下命令「init」。

1[environment third]
2duplicacy init project_01 s3://[email protected]/example_space

值得注意的是,您可以选择通过使用-e选项与init命令来启用重复加密,如下:

1[environment third]
2duplicacy init -e project_01 s3://[email protected]/example_space

当加密启用时,Duplicacy 将提示您每次使用加密密码来与您的空间进行交互时输入加密密码。

一旦init命令运行,Duplicacy 将提示您获取您的 Access 和 Secret 密钥,这些密钥可以从控制面板的 API 页面复制。

1[secondary_label Output]
2[environment third]
3Enter S3 Access Key ID:ExampleAccessKeyGBBI
4Enter S3 Secret Access Key:ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

它将产生如下:

1[secondary_label Output]
2[environment third]
3/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

当您运行init命令时,它会在您的存储库中创建一个名为.duplicacy/的目录,其中包含一个名为preferences的文件。该文件包含有关您的空间以及您指定的任何加密或存储选项的信息。如果您在稍后决定对您的duplicacy配置进行更改,您可以直接编辑preferences文件或删除它。

现在重复init命令 在你的第二个Droplet:

1[environment second]
2duplicacy init project_01 s3://[email protected]/example_space

重新添加 Access 键后,您将看到与第一个 Droplet 中的输出略有不同:

1[secondary_label Output]
2[environment second]
3The storage 's3://[email protected]/example_space' has already been initialized
4Compression level: 100
5Average chunk size: 4194304
6Maximum chunk size: 16777216
7Minimum chunk size: 1048576
8Chunk seed: 6475706c6963616379
9/home/sammy/project-repository will be backed up to s3://[email protected]/example_space with id project_01

现在您的服务器的两个存储库都已初始化,但您可能还需要采取一个步骤来配置重复性。正如现在所说,重复性将提示您每次备份数据时请求您的访问和秘密密密钥,这将很快变得无聊。 为了避免这一点,您可以使用重复性的设置命令将您的空间凭据写入重复性的偏好文件。 在每个服务器上运行以下命令**,以便重复性分别保存您的访问和秘密密密钥:

1duplicacy set -key s3_id -value ExampleAccessKeyGBBI
2duplicacy set -key s3_secret -value ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA

您现在已经准备好使用重复性来备份您的每一个 Droplets 存储库到您的一个空间!

从多个来源备份一个存储库

分布式团队可以从无缝的云备份解决方案中受益,以防止文件冲突和数据丢失. 通过拍摄整个存储库并将其上传到一个空间,使用一个命令,Duplicacy可简化备份,同时避免跨多个机器的文件冲突。

要测试Duplicacy的备份功能,请使用触摸项目存储库 填充到您的每一个Dropplets上,其中包括一对模糊的文件:

1touch /project-repository/file-1.txt
2touch /project-repository/file-2.txt

接下来,在 server-01上,使用 Duplicacy 的备份命令创建您的存储库的截图,并将其上传到您的空间. 因为您已经启动了您的存储库,只有一个存储位置,您不需要指定任何其他选项来备份您的文件:

1[environment third]
2duplicacy backup

所产生的输出应该看起来像这样的东西:

1[secondary_label Output]
2[environment third]
3No previous backup found
4Indexing /home/mark/project-repository
5Listing all chunks
6Packed file-1.txt (0)
7Packed file-2.txt (0)
8Backup for /home/sammy/project-repository at revision 1 completed

现在尝试从 server-02备份您的存储库:

1[environment second]
2duplicacy backup
1[secondary_label Output]
2[environment second]
3Last backup at revision 1 found
4Indexing /home/sammy/project-repository
5Backup for /home/sammy/project-repository at revision 2 completed

你会注意到,由于 server-01server-02上的存储库是相同的,所以 Duplicacy 没有像你在第一个 Droplet 上运行备份命令时那样包装任何文件。

1[environment second]
2nano file-1.txt
1[label project-repository/file-1.txt]
2[environment second]
3The quick brown fox jumped over the lazy dogs.

保存并关闭文件,键入CTRL - X,Y,然后ENTER,然后再次运行备份命令:

1[environment second]
2duplicacy backup
1[secondary_label Output]
2[environment second]
3Storage set to s3://[email protected]/example_space
4Last backup at revision 2 found
5Indexing /home/sammy/project-repository
6Packed file-1.txt (45)
7Backup for /home/sammy/project-repository at revision 3 completed

由于您的存储库中的一个文件发生了新的更改,因此 Duplicacy 包装了该文件并将其上传为修订 3 的一部分。

您可以使用恢复命令将您的存储库重返到以前的修订中,使用-r选项并指定修订号。

1[environment second]
2duplicacy restore -overwrite -r 2

运行恢复命令后,您可以通过检查是否有任何内容来确认 Duplicacy 确实重写了file-1.txt:

1[environment second]
2cat file-1.txt

如果此命令没有生成任何输出,那么file-1.txt将恢复为空文件,并且您已成功将存储库转移到以前的修订中。

备份到多个存储位置

将备份存储在多种离址位置已经成为(https://andsky.com/tech/tutorials/importance-off-site-backups)多年的常见数据安全实践。然而,将文件备份到多种目的地的过程可能令人厌烦,并导致生产率下降。

要在 Duplicacy 中展示此功能,请在 server-01上添加您的第二个空间存储库. 您将无法通过再次运行init命令来执行此操作,因为该存储库已经由 Duplicacy 启动并与您的第一个空间相关联。

Duplicacy 的添加命令使用以下语法:

1[environment third]
2duplicacy add storage_id repository_id s3://region@endpoint/example_space_02

这看起来大多类似于以前使用的init命令,主要的区别是它需要您为新的存储位置指定ID。当您运行上面的init命令时,Duplicacy将默认ID分配给您的第一个存储桶,因为这是它会发送备份的默认位置。

考虑到这些信息,请将您的第二个空间添加到存储库:

1[environment third]
2duplicacy add space_02 project_01 s3://[email protected]/example_space_02

建议您先将存储库备份到默认存储位置,然后使用 Duplicacy 的复制命令将相同的备份复制到第二个存储位置:

1[environment third]
2duplicacy backup
3duplicacy copy -from default -to space_02

这将从你的第一个空间复制到你的第二个空间的每个片段和快照,重要的是要注意,复制命令是非破坏性的,它不会写上任何现有文件。

结论

当与DigitalOcean Spaces相结合时,重复性允许用户灵活地管理云备份. 如果您需要从多个计算机上备份相同的存储库,或者需要将一个存储库备份到云中的多个位置,重复性可能会成为您的备份解决方案的组成部分。

如果您有兴趣了解如何使用重复性,您可以参阅GitHub上的项目维基(https://github.com/gilbertchen/duplicacy/wiki)。

Published At
Categories with 技术
comments powered by Disqus