可能重复:
自动备份 EC2 实例的最简单方法是什么?
我有一个 EBS 支持的 Amazon EC2 实例。我想创建一个每日备份计划,并保留一周的每日备份,以及一些较旧的映像(来自 2、3、4 周前)。我不介意使用快照机制动态创建备份,但我希望有一个简单的包装器来帮我管理它。
最简单的设置方法是什么?对于微型实例,这要花多少钱?
答案1
我的所有应用程序代码、数据库、配置和日志文件都放在单独的 EBS 卷上,我将其挂载在 /dev/sdf 上。您可以创建它的初始快照,然后在运行时将其挂载到您的操作系统。我的 ami 只包含自动启动环境的相关内容。
ec2-run-instances ami-id <other options> --block-device-mapping '/dev/sdf=snap-id::false'
可以使用 crontab 和 ec2-create-snapshot 或其他程序轻松备份由此创建的卷。ec2-describe-snapshot 给出了快照创建的日期,因此可以将其与 awk 或其他程序一起使用来确定要删除哪个。尽管快照仅记录版本之间的变化,因此在第一个版本之后,它们实际上不会占用太多空间。
答案2
我建议尝试我的“ec2-automate-backup”工具并在 cron 下运行它。您可以按如下方式运行命令ec2-automate-backup -v your_volumeid -k 7 -p
。这里的选项告诉工具:要备份哪些卷(-v your_volumeid)、要保留备份的天数(-k 7)以及清除旧卷(-p)。该工具可免费使用且开源。
如果您需要备份多个卷,则可以使用 AWS Tags“标记”每个卷,然后按如下方式运行ec2-automate-backup -s tag -t "Backup=your_tag" -k 7 -p
。 这里的选项是:-s tag(-s tag 指示ec2-automate-backup
按标签选择要备份的卷)和 -t“Backup=your_tag”指示ec2-automate-backup
备份标记为“your_tag”的卷。
ec2-automate-backup 是 AWS-Missing-Tools 的一部分,可从以下网址获取http://awsmissingtools.com
答案3
我创建了一个小的包装脚本,它执行以下操作:
-dumps 数据库(很小,只需几秒钟)
-创建一个 tarball,但只包含昨天和今天的差异,如果当天是星期日,则创建一个完整备份
-在 /etc 和 webroot 上调用 hg addremove && hg commit (忽略文件非常智能)
-将先前创建的文件上传到 S3
这不是完整备份,因为它不包括操作系统。但由于我的所有配置文件都已保存,所以我不在乎。这是一种经济高效的方法,可以确保所有内容都可用,甚至某些内容(如数据库)的历史记录也可用。
希望有所帮助。
答案4
这里有一个简短的 Python 脚本我创建了负责维护的功能(删除旧备份等......)