最近突然想到要为自己的 VPS 做一个异地备份的方案,看了一下各家的方案,然后发现了 Amazon Glacier
可以满足我的需要,但是网络上却很少找得到备份到 Amazon Glacier
的文章,大多数都是备份到 Amazon S3
的,因此特意写一篇文章分享给大家。
Amazon Glacier
Amazon Glacier 是一种安全、耐久且成本极低的云存储服务,适用于数据存档和长期备份。客户能以每月每 GB 0.007 USD 的低廉价格安全地存储大量或少量数据,与本地解决方案相比,显著降低了成本。为了保持低成本,Amazon Glacier 已针对不太频繁访问的数据进行优化,适合检索时间需要数小时的情况。
通常来说,我们的每一次备份都是一次完整的网站备份,包括了我们网站的数据、数据库的备份等等。如果网站有一个庞大的规模的话,每一次备份都是是相当庞大的,这就要求了我们有一个足够大的地方来存放这些数据。一般来说,我们的备份都是冷数据,一旦生成并存放在了适当的地方,我们几乎就不会去管他,就由他放在那个地方充当作那个时间点的存档,只有在丢了数据之后需要恢复原先的数据才会去找回备份。
基于上面的几点需要,我找到了 Amazon Glacier
官方网站:https://aws.amazon.com/cn/glacier/
Amazon Glacier 的优点
定价低
以 美国西部(俄勒冈)
为例子,Amazon Glacier
的定价是$0.007 每月每 GB。
假如你有一个 500G 的备份,单单从存储的方面来说,一个月也只是需要 \(3.5,这是价格是相当低的。同等的 500G 的备份,如果放在 `Amazon S3` 上面的话,一个月的存储则是需要 \)14.85
当然,除了存储方面的收费,还有请求以及数据传输收费,关于收费请看官方的 Amazon Glacier 定价
容量大
从官方的 FAQ 上面了解到
Amazon Glacier 中可存储的数据总量没有上限。每个档案的上限为 40 TB。
持久性
从官方的 FAQ 上面了解到
Amazon Glacier 专门针对档案存储而设计的,其目标年平均存储持久性为 99.999999999%。该项服务通过冗余方式将数据存储在多个设施以及一个设施内的多个设备上。为了增加持久性,Amazon Glacier 在返回上传档案相关的 SUCCESS 之前,会将您的数据同步存储到多个设施。Glacier 还执行常规系统数据完整性检查,并具有自动修复功能。
Amazon Glacier 的缺点
文件提取慢
Amazon Glacier
主要设计来存储大量的冷数据,因此如果我们需要提取某个档案的话,比较麻烦。
我们通过 Rest API 提出一个下载请求,然后会在后台进行档案的提取,而这段时间通常是比较长的,通过是需要4-5 个小时才可以让档案可以下载。
没有文件列表
我们每次将数据上传到 Amazon Glacier
之后,都需要自己维护一份文件的清单,这份清单要存储 Amazon Glacier
上的文件列表。
尽管系统会定期(24 小时)清点一次数据,然后你可以通过控制台知道自己大概上传了什么数据,但是这并不是实时的,最好的方法还是自己维护。
其实嘛,我说了这么多,也只是我个人的感受,自己亲自去试一试就可以体验出来很多东西了~
服务器备份方案
测试服务器:Debian 8.3
使用工具:mt-aws-glacier
安装 mt-aws-glacier
mt-aws-glacier
是由 Perl 语言所写并且开源在 GIthub 的项目,项目地址是:https://github.com/vsespb/mt-aws-glacier
详细的、不同操作系统的安装方案在项目的 README.md
都有详细的叙述,本文只是讲 Debian 8 的安装方法。(其实方法都差不多的…
wget -O - https://mt-aws.com/vsespb.gpg.key | sudo apt-key add -
echo "deb http://dl.mt-aws.com/debian/current jessie main"|sudo tee /etc/apt/sources.list.d/mt-aws.list
sudo apt-get update
sudo apt-get install libapp-mtaws-perl
安装完后,直接运行 mtglacier
如果有下面的输出就代表安装完成。
root@imlonghao:~# mtglacier
MT-AWS-Glacier, Copyright 2012-2014 Victor Efimov http://mt-aws.com/ Version 1.120
ERROR: Please specify command
获取 AWS 的 Access Keys
本节中,由于获取根访问密钥并不安全,一旦泄漏整个 AWS 帐号都会收到影响,因此我们通过 IAM 获取一个独立的 Access Keys
首先,打开 AWS 管理控制台。在「服务 - 安全&身份」栏目下找到 IAM
点击左侧的用户,然后选择创建新用户
给这个用户设置一个用户名,我这里设置的是 backup
,主要要勾选下面的生成访问密钥
然后保存好他这里生成的用户安全凭证
右下角关闭,然后点击我们刚刚创建的用户,然后选择「权限」这个栏目,点击「附加策略」
我们刚刚新创建的用户是没有什么权限的,因此我们要手动给他赋予操作 Glacier 的权限
AWS 管理的策略有点多,所以我们直接搜索就可以找到关于 Glacier
的策略了。
由于我们要写入数据,因此我们选择 AmazonGlacierFullAccess
然后确定
(其实 mt-aws-glacier 有列出他所需要的权限,可以根据他所要的权限手动赋予,由于有点麻烦就不进行演示了)
然后,我们就获取好一个有权限的 Access Keys 了
配置 mt-aws-glacier
备份的目录:/data/backup
配置文件地址:/data/backup.conf
Journal 文件地址:/data/backup.journal
配置文件 /data/backup.conf
按照一下例子配置:
key = key
secret = secret
region = us-west-2
protocol = https
vault = backup
journal = /data/backup.journal
dir = /data/backup
Glacier 的区域可以自行选择
配置完成后,运行下面的命令新建一个名为 backup
的文件库
mtglacier create-vault backup --config /data/backup.conf
列出现有的文件库
mtglacier list-vaults --config /data/backup.conf
备份上传 /data/backup
目录下的所有文件到配置文件中设置的 backup
文件库
mtglacier sync --config /data/backup.conf
如果想要做自动备份的话,就随便拿网上现成的备份脚本,然后将他们 FTP 上次什么的删掉换成上面的 sync
就可以正常运行的了。
到此,教程差不多就结束了,关于 mt-aws-glacier 的一些其他说明还是希望能够自己去看看官方的文档,这会对你有很大的帮助的!