【问题标题】:Script to automate creation and management of EC2 EBS snapshots用于自动创建和管理 EC2 EBS 快照的脚本
【发布时间】:2011-05-25 19:40:41
【问题描述】:

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

“管理”是指我正在寻找一个脚本,它不仅会创建每日备份(我猜会涉及到一个 cron 作业),而且还会删除早于 x 天的快照,以避免过度使用数据。

我相信这样的脚本确实存在于某处,但我似乎无法确定一个。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我在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 将快照保留一整年。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。结果,我创建了一个特殊的脚本。如果你的服务器上安装了 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
          

        【讨论】:

          【解决方案4】:

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

          这个想法是有一个集中的程序来管理所有 EBS 快照(本地的实例或远程)

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

          一些特点: * 程序以守护模式或脚本模式(crontab)运行

          • 您也可以只选择本地附加卷或远程卷

          • 您可以定义日志文件

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

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

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

          • 您可以一步调整数量,我的意思是如果您有 6 个快照,并且您在 3 中修改数量,该过程将自动重新调整。

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

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

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

            当脚本以守护程序模式运行时,您可以“即时”重新配置脚本,脚本接受信号和 IPC。

            它有一个“本地缓存”以避免多次请求 API。您可以在配置文件中添加或修改任何配置并重新加载而不终止进程。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-09-04
            • 1970-01-01
            • 2019-07-11
            • 2011-10-23
            • 2018-08-28
            • 2016-07-09
            • 2012-11-29
            • 1970-01-01
            相关资源
            最近更新 更多