内容中心如何使用阿里云国际对象存储服务自动备份

如何使用阿里云国际对象存储服务自动备份

2022-05-18 15:24:40

异地备份是一项重要的安全措施。它们允许在发生硬件故障、意外删除或任何其他灾难性事件时还原数据。自动备份可提高备份过程的可靠性,并确保定期备份最近的数据。

我们将使用阿里云对象存储服务 (OSS) 作为异地备份存储解决方案。数据将由一个简单的bash脚本备份,该脚本由cronjob定期执行。Minio 客户端将用于将备份传输到 OSS

阿里云 OSS 是一个合适的备份存储解决方案。很少访问的对象(如备份)可以可靠、廉价且安全地存储。前 5 GB 的存储空间可以完全免费使用。

先决条件

在开始之前,请确保您有阿里云账号。立即注册即可获得300美元的免费积分。创建弹性云服务器或使用SSH连接现有服务器进行操作。您所需要的只是一个基于Linux的系统。

步骤 0 – 添加新用户(可选)

最好使用具有有限系统访问权限的帐户来执行备份脚本。这样做可以提高安全性,因为如果执行备份脚本的用户受到威胁,攻击者的可能性有限。运行以下命令以添加具有名称备份的新用户。

sudo adduser backup

尽可能限制新用户的系统权限,而不限制其上传备份到OSS的能力。

步骤 1 – 创建 OSS 存储桶

接下来,我们将为备份创建一个 OSS 存储桶。存储桶是对象集合的命名空间。每个对象都由存储桶名称和对象键唯一标识。

首先,导航到阿里云控制台。从主导航栏中打开“产品”下拉列表,然后单击“存储和 CDN”部分中的对象存储服务链接。如果您之前未使用过 OSS,您将被要求接受 OSS 服务条款。单击创建存储桶,为备份对象创建存储桶。

1

输入存储桶的名称,选择地域,选择存储类并设置访问控制限制。我们将使用存储桶名称 backup-demo 和 EU Central 1 区域

三种可用的存储类提供相同的数据可靠性和服务可用性保证。

它们主要在数据访问功能和定价方面有所不同。与标准存储相比,不频繁访问存储提供实时访问和更低的存储费用。任何对象至少需要支付 30 天的存储费用,即使对象在创建后不久就被删除了。对象的最小计费大小为 128 KB。归档存储提供的存储费用甚至更低,但数据必须解冻才能变得可读,这需要一分钟。最小计费存储持续时间为 60 天,对象的最小计费大小为 128 KB。

考虑到不同存储类的属性,不频繁访问存储将是大多数备份用例的最佳类。与标准存储相比,它结合了实时访问和更低的存储费用。可以在此处找到有关存储类的详细信息。

对于备份,ACL 应为专用,因为备份应仅由经过身份验证的系统写入和读取。请注意,创建存储桶后,无法更改所选的存储类和区域。单击“确定”以创建存储桶。

2

步骤 2 – 创建访问密钥

接下来,我们将创建访问密钥,备份脚本将使用该密钥通过 OSS 进行身份验证。单击OSS仪表盘页面的访问密钥按钮。

3

系统将询问您是否要使用子用户的访问密钥。子用户的访问密钥更安全,因为它们的权限可以被锁定。单击“子用户访问密钥入门”,将其重定向到“资源访问管理 (RAM)”仪表板。如果您以前没有使用过RAM,您将被要求接受RAM服务条款。

接下来,单击边栏中的“用户”。以下屏幕列出了每个子用户。通过单击“创建用户”按钮创建新的子用户

4

接下来,输入新用户的数据。我们将选择用户名 backup-demo-user。所有其他字段都是可选的“标记自动为此用户生成访问密钥”复选框。按“确定”创建用户。

5

系统将提示您将用户的访问密钥保存到您的计算机。之后无法检索访问密钥!确保其安全。

6

接下来,我们将配置与访问密钥关联的权限。我们将选择阿里云OSSFullAccess授权策略。因此,使用此访问密钥进行身份验证的任何人都可以管理 OSS。请记住,可以编辑策略以进一步降低对单个存储桶或存储桶组的访问权限。

步骤 3 – 设置 Minio 客户端

Minio Client为UNIX命令(如ls,cat和cp)提供了一种现代替代方案。我们将使用它,因为它不仅支持文件系统,还支持与S3兼容的云存储,如阿里云OSS

如果您愿意,可以使用 Minio 客户端 Docker 映像。有关说明,请参阅 DockerHub 上的 minio/mc

使用 wget 下载 Minio Client 可执行文件。如果您不使用 linux-amd64,请确保从 https://dl.minio.io/client/mc/release/ 中选择正确的下载链接。

cd ~
wget https://dl.minio.io/client/mc/release/linux-amd64/mc

接下来,使用 chmod 命令设置可执行位以允许执行该文件。

chmod +x mc

将可执行文件移动到 PATH 环境变量中列出的目录。这样做将允许从任何目录运行可执行文件,而无需提供其完整路径。/usr/bin 目录可用于许多常见的 Linux 发行版(如 Ubuntu)的用途。可执行文件将可供系统上的所有用户使用。

sudo mv ./mc /usr/bin/mc

运行mc版本以检查是否可以运行Minio客户端。

步骤 4 – 配置 Minio 客户端以用于阿里云 OSS

接下来,我们将配置 Minio 客户端以用于阿里云 OSS。在替换占位符后,使用步骤 1 和 2 中的相应值运行以下命令。可以在 OSS 存储桶控制面板上找到。如果不确定要选择哪个终结点,请使用 Internet 访问终结点。如果缺少所有必需的 Minio 客户端配置文件,则会自动创建这些文件。

mc config host add oss <OSS_Endpoint> <OSS_ACCESS_KEY> <OSS_SECRET_KEY>

列出在步骤 1 中创建的存储桶中的所有对象,以检查配置是否正常工作。

mc ls oss/backup-demo

您不应看到任何输出,因为存储桶不包含任何对象。如果显示错误消息,请检查 ~/.mc/config.json 上的配置文件。

步骤 5 – 创建备份脚本

接下来,我们将创建一个脚本,将目录中的所有文件备份到OSS。备份数据可以是数据库转储或任何其他数据。实际上,备份数据将由另一个脚本定期生成。我们将为此演示手动放置一些文本文件。如果要将包含多个文件的目录备份为一个对象,请考虑使用 tar 将目录打包为单个文件。

使用您选择的文本编辑器在主目录中创建名为 backup.sh 的文件。将以下脚本复制到文件中。

#!/usr/bin/env bash

SOURCE=$1
DESTINATION=$2

mc cp --json --recursive $SOURCE $DESTINATION

第一行称为shebang,并确保脚本将使用bash执行。之后,我们将第一个参数分配给名为 SOURCE 的变量,将第二个参数分配给名为 DESTINATION 的变量。第二行使用 Minio Client 以递归方式将所有文件和目录从复制到目标。SOURCE 和 DESTINATION 都可以引用文件系统或云存储。文件名将用作对象键。–-json 选项允许将结构化输出为 JSON。

OSS存储空间中已有的任何文件都将被跳过。因此,应确保不要重复使用文件名。确保所有文件名都唯一的最简单方法是在文件名中包含时间戳。

步骤 4 – 使用 Crontab 安排常规脚本执行

接下来,我们将使用 cronjob 定期执行备份脚本。首先,使用 chmod 在 backup.sh 脚本上设置可执行位。这将允许文件执行。

chmod +x ~/backup.sh

接下来运行 crontab -e 以配置 cronjob。如果这是您第一次使用 crontab,系统将要求您选择一个编辑器:

no crontab for nick - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny

Choose 1-4 [2]:

按回车键选择 nano(默认)。将以下行添加到文件末尾。

* * * * * ~/backup.sh ~/backup-demo/* oss/backup-demo

SOURCE 参数指向 ~/backup-demo 目录中的文件,而 DESTINATION 参数指向我们之前创建的 OSS 存储桶。备份脚本将每分钟执行一次。保存文件。

让我们检查一切是否按预期工作。在备份目录中创建备份目录和文件:

mkdir ~/backup-demo
echo test1 > ~/backup-demo/test1.txt

该文件应在一分钟后显示在您的 OSS 存储桶中。使用 mc ls oss/backup-demo 检查存储桶,或在阿里云控制台中打开存储桶控制面板。

如果文件未出现在 OSS 存储桶中,请检查 crontab 输出。默认情况下,cronjobs 会记录到 /var/log/syslog

其他注意事项

  • 如果您需要备份大量数据,压缩备份是有意义的。
  • 您应确保监视任何自动备份。这将使您能够在出现任何问题时修复它们,并确保定期备份您的数据。
  • 无法还原的备份是无用的。您应通过定期测试来确保备份和备份过程按预期工作。

结论

在这篇技术分享文章中,我们探讨了如何将备份自动上传到 OSS。我们设置了一个新的 OSS 存储桶,创建了访问密钥,设置并配置了 Minio Client 以将文件传输到 OSS,创建了一个备份脚本,并使用 cronjob 计划了备份脚本的执行。如果您有任何疑问,请发表评论!

上一篇
腾讯云国际如何排查迁移任务提示的错误原因?
下一篇
腾讯云国际DDOS攻击常见问题
立即咨询 享受更轻松快捷的上云服务
联系我们
联系我们
Skype:87Cloud Alibaba
E-mail:the87cloud@outlook.com
最新活动
合作流程
解决方案
代理合作
关于我们
87Cloud Alibaba
the87cloud@outlook.com
电报交谈
Skype
企业邮箱
返回首页
回到顶部