如何使用重复管理备份到云
###介绍
Duplicacy 是一个跨平台备份工具,它提供了许多功能——包括增量备份、并发备份和客户端加密——旨在简化将数据备份到云的过程。 CLI(命令行界面)Linux 版本可供个人免费使用,但商业用户需要付费许可证。 此外,Duplicacy 可用于具有图形界面的 MacOS 和 Windows,并且此版本需要个人和商业用户都为许可证付费。
基于 无锁重复数据删除 的理念,Duplicacy 旨在安全地管理对各种云存储服务的备份。 当 Duplicy 客户端创建并存储一个新块时,使用相同存储桶的其他客户端可以看到该块已经存在,因此不会再次上传它。 这允许单独的客户端共享和备份相同的数据,而无需任何额外的工作来跟踪备份。
本教程提供了有关如何安装 Duplicacy 的 CLI 版本并使用它来管理具有 DigitalOcean Space 的典型数据备份过程的高级概述。 我们还将演示如何将共享存储库从多个 Droplet 备份到同一个空间,以及如何将快照备份到多个空间以提高数据安全性。
- 先决条件
要学习本教程,您需要:
- 使用我们的初始服务器设置指南配置的两个Ubuntu 16.04 Droplets。 您可以随意命名您的服务器,但为了清楚起见,在本教程中它们将被称为 server-01 和 server-02。
- 两个数字海洋空间。 请参阅我们的 DigitalOcean Spaces 简介,了解如何启动和运行这些设备的说明。
- 您的空间的访问密钥和秘密密钥。 要生成这些,请访问 DigitalOcean 控制面板中的 API 页面。
有了这些先决条件,您就可以安装 Duplicaty。
- 安装重复
可以使用 wget
从 Duplicacy GitHub 存储库 下载最新的 Duplicacy CLI 版本(个人用户无需许可证)。
在 server-01 和 server-02 上的 上运行以下命令,将 Dupliacy 下载到每个服务器上(将下载链接替换为最新版本的下载链接):
sudo wget -O /opt/duplicacy https://github.com/gilbertchen/duplicacy/releases/download/v2.0.10/duplicacy_linux_x64_2.0.10
接下来,在下载位置和 /usr/local/bin
中的新目录之间创建一个符号链接:
sudo ln -s /opt/duplicacy /usr/local/bin/duplicacy
最后,使 duplicacy
可执行:
sudo chmod 0755 /opt/duplicacy
Dupliacy 现在应该安装在每个 Droplet 上,您现在可以配置它以使用您的空间。
- 初始化您的存储库并配置重复性
重复从目录级别备份数据,因此在您开始将文件上传到您的空间之前,它必须与两个 Droplet 上的特定目录或存储库相关联。 为此,您需要创建一个项目存储库并使用 Dupliacy 的 init
命令对其进行初始化。
init
命令接受以下语法:
duplicacy init repository_id s3://region@endpoint/space_name
repository_id
:这是Duplicacy用来区分不同存储库的标签。 如果您计划从多个源备份相同的存储库(我们将在本教程的下一步中),则两个 Droplet 上的存储库 ID 应该相同。region
:region
是你的 Droplet 所在区域的名称。endpoint
:端点是服务器端 Web API 用来指定某些资源的位置的静态位置。 对于 DigitalOcean Spaces,端点将是.digitaloceanspaces.com
之后的区域,如nyc3.digitaloceanspaces.com
。 您的空间端点名称也可以直接从“设置”选项卡下的空间控制面板复制。space_name
:这是在创建时指定的空间名称。 请注意,这不是您空间的 URL。 如果你的 Space 的 URL 是https://example_space.nyc3.digitaloceanspaces.com
,那么它的名字就是example_space
。
如果您希望将备份转到您空间中的特定文件夹,请在运行 init
命令时在您的空间名称后添加文件夹名称。 这样做时,请记住在文件夹名称后面加上斜杠:
duplicacy init repository_id s3://region@endpoint/space_name/folder_name/
一旦掌握了这些详细信息,就可以使用 mkdir
命令在每个 Droplets 上创建存储库目录 。 之后,使用 cd
导航到您的新存储库:
mkdir project-repository cd project-repository/
将 project-repository/
作为您的工作目录,在 server-01 上运行以下 init
命令。 请务必用您自己的详细信息替换突出显示的值:
duplicacy init project_01 s3://nyc3@nyc3.digitaloceanspaces.com/example_space
值得注意的是,您可以通过使用 -e
选项和 init
命令来选择启用具有重复性的加密,如下所示:
duplicacy init -e project_01 s3://nyc3@nyc3.digitaloceanspaces.com/example_space
启用加密后,Duplicacy 会在您每次使用它与您的 Space 交互时提示您输入加密密码。
一旦 init
命令运行,Duplicacy 将提示您输入访问和秘密密钥,可以从控制面板的 API 页面 复制这些密钥。
OutputEnter S3 Access Key ID:ExampleAccessKeyGBBI Enter S3 Secret Access Key:ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA
它将输出以下内容:
Output/home/sammy/project-repository will be backed up to s3://nyc3@nyc3.digitaloceanspaces.com/example_space with id project_01
当您运行 init
命令时,它会在您的存储库中创建一个名为 .duplicacy/
的目录,其中包含一个名为 preferences
的文件。 此文件包含有关您的空间以及您指定的任何加密或存储选项的信息。 如果稍后您决定更改您的重复配置,您可以直接编辑 preferences
文件或将其删除。 下次您在该存储库中运行 init
命令时,将重新创建该文件。
现在在第二个 Droplet 上重复 init
命令 :
duplicacy init project_01 s3://nyc3@nyc3.digitaloceanspaces.com/example_space
再次添加访问密钥后,您将看到与第一个 Droplet 略有不同的输出:
OutputThe storage 's3://nyc3@nyc3.digitaloceanspaces.com/example_space' has already been initialized Compression level: 100 Average chunk size: 4194304 Maximum chunk size: 16777216 Minimum chunk size: 1048576 Chunk seed: 6475706c6963616379 /home/sammy/project-repository will be backed up to s3://nyc3@nyc3.digitaloceanspaces.com/example_space with id project_01
您的两个服务器的存储库现在都已初始化,但您可能还需要采取更多步骤来配置 Duplicaty。 就目前而言,每次备份数据时,Duplicacy 都会提示您输入访问密钥和密钥,这将很快变得乏味。 为避免这种情况,您可以使用 Dupliacy 的 set
命令将 Space 的凭据写入 Dupliacy 的 preferences
文件。 在您的每台服务器 上运行以下命令 以让 Duplicity 分别保存您的访问密钥和密钥:
duplicacy set -key s3_id -value ExampleAccessKeyGBBI duplicacy set -key s3_secret -value ExampleSecretKeyEC1wnP2YiHobVcSBaZvLoFXXlnA
您现在已准备好使用 Dupliacy 将您的每个 Droplet 的存储库备份到您的空间之一!
- 从多个来源备份一个存储库
分布式团队可以从防止文件冲突和数据丢失的不显眼的云备份解决方案中受益。 通过拍摄整个存储库的快照并使用单个命令将其上传到空间,Duplicacy 简化了备份,同时避免了多台机器之间的文件冲突。
要测试 Dupliacy 的备份功能,请使用 touch
用几个虚拟文件填充每个 Droplets 上的 project-repository
:
touch /project-repository/file-1.txt touch /project-repository/file-2.txt
接下来,在 server-01 上,使用 Duplicaty 的 backup
命令创建存储库的快照并将其上传到您的空间。 因为您只使用一个存储位置启动了存储库,所以您无需指定任何其他选项来备份您的文件:
duplicacy backup
结果输出应如下所示:
OutputNo previous backup found Indexing /home/mark/project-repository Listing all chunks Packed file-1.txt (0) Packed file-2.txt (0) Backup for /home/sammy/project-repository at revision 1 completed
现在尝试从 server-02 备份您的存储库:
duplicacy backup
OutputLast backup at revision 1 found Indexing /home/sammy/project-repository Backup for /home/sammy/project-repository at revision 2 completed
您会注意到,因为 server-01 和 server-02 上的存储库是相同的,所以 Dupliacy 没有像运行 [X170X 时那样打包任何文件] 命令在你的第一个 Droplet 上。 要查看备份稍有不同的快照时会发生什么,请打开 server-02 上的一个虚拟文件并在其中添加一些文本:
nano file-1.txt
项目存储库/文件-1.txt
The quick brown fox jumped over the lazy dogs.
输入 CTRL - X
、Y
保存并关闭文件,然后输入 ENTER
,然后再次运行 backup
命令:
duplicacy backup
OutputStorage set to s3://nyc3@nyc3.digitaloceanspaces.com/example_space Last backup at revision 2 found Indexing /home/sammy/project-repository Packed file-1.txt (45) Backup for /home/sammy/project-repository at revision 3 completed
由于您的存储库中的一个文件发生了新的更改,Duplicacy 打包了该文件并将其作为修订版 3 的一部分上传。
您可以使用 restore
命令通过使用 -r
选项并指定修订号来将存储库恢复到以前的修订版。 请注意,除非指定了 -overwrite
选项,否则它不会覆盖现有文件,如下所示:
duplicacy restore -overwrite -r 2
运行restore
命令后,可以通过检查是否有内容来确认Duplicacy确实重写了file-1.txt
:
cat file-1.txt
如果此命令未产生任何输出,则 file-1.txt
将恢复为空文件,并且您已成功将存储库回滚到以前的修订版。
- 备份到多个存储位置
多年来,在多个异地位置存储备份一直是 一种常见的数据安全实践 。 但是,将文件备份到多个目标的过程可能会很乏味并导致工作效率下降。 但是,有许多第三方备份工具可以提供快速解决方案,将数据备份到云中的多个位置。
要在 Duplicaty 中演示此功能,请将您的第二个空间添加到 server-01 上的存储库。 您将无法通过再次运行 init
命令来执行此操作,因为该存储库已由 Dupliacy 启动并与您的第一个空间相关联。 对于这些场景,您需要使用 add
命令将已初始化的存储库连接到另一个存储桶。
Duplicaty 的 add
命令使用以下语法:
duplicacy add storage_id repository_id s3://region@endpoint/example_space_02
这看起来与之前使用的 init
命令非常相似,主要区别在于它需要您为新的存储位置指定一个 ID。 当您运行上面的 init
命令时,Duplicacy 将 default
ID 分配给您的第一个存储桶,因为这是发送备份的默认位置。 您为第二个 Space 提供的存储名称可以是您喜欢的任何名称,但它可能有助于它具有描述性,以便您记住它代表的 Space。
记住这些信息,将您的第二个空间添加到存储库:
duplicacy add space_02 project_01 s3://nyc3@nyc3.digitaloceanspaces.com/example_space_02
您现在已准备好将存储库备份到您的第二个空间。 建议您首先将存储库备份到默认存储位置,然后使用 Dupliacy 的 copy
命令将相同的备份复制到您的第二个存储位置:
duplicacy backup duplicacy copy -from default -to space_02
这会将每个块和快照从您的第一个空间复制到您的第二个空间。 重要的是要注意 copy
命令是非破坏性的,它不会覆盖任何现有文件。
##结论
当与 DigitalOcean Spaces 结合使用时,Duplicacy 允许用户灵活地管理云备份。 如果您需要从多台计算机备份同一个存储库,或者您需要将一个存储库备份到云中的多个位置,那么 Duplicity 可以成为您备份解决方案不可或缺的一部分。
如果您有兴趣了解有关如何使用 Duplicaty 的更多信息,可以查看 GitHub 上的 项目 wiki。 或者,如果您想了解有关备份策略的更多信息,请参阅我们的指南如何为您的 VPS 选择有效的备份策略或者我们之间的比较对象存储对比 块存储服务 .