用于自动创建和管理EC2 EBS快照的脚本

时间:2010-12-15 09:55:33

标签: amazon-ec2 amazon-web-services cloud amazon-ebs

自动化(每日)我的EBS卷(2)快照并管理它们的最佳方法是什么。

通过'manage'我的意思是我正在寻找一个不仅会创建每日备份的脚本(我猜测将涉及一个cron作业),但这也将删除超过x天的快照,以避免过度使用数据。

我相信这样的脚本确实存在于某个地方,但我似乎无法确定下来。

4 个答案:

答案 0 :(得分:3)

我在http://awsmissingtools.com使用了类似的开源工具 - 运行时的“ec2-automate-backup”工具如下“ec2-automate-backup -s tag -t Backup-true -k 14 -p“将备份标签为Backup = true的所有EBS卷,并将这些快照设置为在-k天后删除 - 您可以使用-k 14保留快照14天,或者使用-k保留整年的快照365。

答案 1 :(得分:1)

我确定这种脚本还有其他实现,但这是我的:

http://www.capsunlock.net/2009/10/deleting-old-ebs-snapshots.html

答案 2 :(得分:0)

我遇到了同样的问题。结果我创建了一个特殊的脚本。如果您的服务器上安装了PHP,那么您可以这样做。

此脚本不仅会创建您设置的时间间隔的备份,还会删除较早显示的快照。

  1. 打开与服务器的SSH连接。
  2. 导航到文件夹

    $ cd /usr/local/
    
  3. 将此要点克隆到ec2文件夹

    $ git clone https://gist.github.com/9738785.git ec2
    
  4. 转到该文件夹​​

    $ cd ec2
    
  5. 制作backup.php可执行文件

    $ chmod +x backup.php
    
  6. 打开AWS PHP SDK github项目的releases并复制aws.zip按钮的URL。现在将其下载到您的服务器中。

    $ wget https://github.com/aws/aws-sdk-php/releases/download/2.6.0/aws.zip
    
  7. 将此文件解压缩到aws目录。

    $ unzip aws.zip -d aws 
    
  8. 编辑backup.php php文件并设置行5-12

    中的所有设置
    $dryrun     = FALSE;
    $interval   = '24 hours';
    $keep_for   = '10 Days';
    $volumes    = array('vol-********');
    $api_key    = '*********************';
    $api_secret = '****************************************';
    $ec2_region = 'us-east-1';
    $snap_descr = "Daily backup";
    
  9. 测试一下。运行此脚本

    $ ./backup.php
    

    测试快照已创建。

  10. 如果一切正常,只需添加cronjob。

    * 23 * * * /usr/local/ec2/backup.php
    

答案 3 :(得分:0)

我遇到很多人在寻找管理EBS快照的工具。我在Internet上找到了几个工具,但它们只是脚本和不完整的解决方案。最后,我决定创建一个更灵活,集中且易于管理的程序。

我们的想法是建立一个集中程序来统治所有EBS快照(实例或远程控制器的本地)

我创建了一个小型Perl程序https://github.com/sciclon/EBS_Snapshots

一些功能: *程序以守护进程模式或脚本模式(crontab)运行

  • 您也可以只选择本地附加卷或遥控器

  • 您可以定义日志文件

  • 您可以为每个卷的快照量定义

  • 您可以为每个卷定义其中的频率

  • 频率和数量在达到删除最旧快照的限制时将像“循环”一样工作。

  • 如果您有6个快照,并且您在3中修改了数量,那么您可以在一步中重新调整数量。过程将自动重新调整。

  • 您可以定义“预定”执行,您可以在执行快照之前添加要执行的代码,例如您想尝试卸载卷或停止某些服务,或者可能检查实例加载。父进程将等待退出代码,“0”表示成功,您可以根据退出代码定义是否继续。

    • 您可以定义“postscript”执行以在拍摄快照后执行任何脚本(例如电子邮件告诉您)

    • 您可以添加“受保护的快照”以跳过您定义的快照,我的意思是它们将处于“只读”状态,并且它们永远不会被删除。

    当你在守护进程模式下运行时,你可以“动态”重新配置脚本,脚本接受信号和IPC。

    它有一个“本地缓存”,以避免多次请求API。您可以在配置文件中添加或修改任何配置,然后重新加载而不会中断该过程。