自动备份EC2实例最简单的方法是什么?

可能重复:
什么是自动备份EC2实例最简单的方法?

我有一个EBS支持的Amazon EC2实例。 我想创build一个每日备份计划,并保留一周的每日备份,以及一些较旧的图像(从2,3,4周前)。 我不介意使用快照机制即时创build备份,但是我想要一个简单的包装来为我pipe理它。

设置这个最简单的方法是什么? 对于微观实例,这会花费多less钱?

我把所有的应用程序代码,数据库,configuration和日志文件都放在一个单独的EBS卷上,我将其安装在/ dev / sdf上。 您可以创build一个初始快照,然后在运行时将其挂载到您的操作系统。 我的爱美只是包含相关的东西来自动启动环境。

ec2-run-instances ami-id <other options> --block-device-mapping '/dev/sdf=snap-id::false' 

这个创build的卷可以使用crontab和ec2-create-snapshot或其他方法相当容易地备份。 ec2-describe-snapshot给出了快照创build的date,所以可以使用awk或其他方法来确定要删除哪一个。 尽pipe快照只logging了版本之间的变化,但是在第一个版本之后他们并没有占用太多的空间。

我build议给我的“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标签(-s标签告诉ec2-automate-backupselect标签备份的卷)和-t“Backup = your_tag”告诉ec2-automate-backup备份标签为“your_tag”的卷。

ec2-automate-backup是AWS-Missing-Tools的一部分,可在http://awsmissingtools.com上find

我创build了一个小的包装脚本,它执行以下操作:

转储数据库(这是小的,需要几秒钟)

– 创build一个tarball,但是只有昨天和今天之间的差异,或者如果是星期天,则是完全备份

– 在/ etc和webroot(忽略文件非常聪明)上调用hg addremove && hg commit

上载以前创build的文件到S3

这不是完整的备份,因为它不包括操作系统。 但是因为所有的configuration文件都保存了,所以我不在乎。 这是确保一切都可用的经济高效的方法,甚至是某些事情(如数据库)的历史logging。

希望有所帮助。

这是我创build的一个简短的Python脚本 ,负责维护(删除旧的备份等)