使用快照备份ec2实例的简单解决方案

simplec2snap的Python项目详细描述


简单EC2快照
====


=>使用快照备份EC2实例的简单解决方案

标记(允许使用通配符)或按实例ID
*凭据文件多个,配置文件
*限制快照数量
*仅将快照限制为数据磁盘
*快照保留时间或给定数量

最简单的解决方案是使用pip:
```
pip install simplec2snap
```

您可以同时设置多个标记和/或多个实例ID。

例如,如果我想在同一命令行中快照两个实例,应该如下所示:
````
>;./simplec2snap.py-i-ad0fcc4b-i-56489db2
```

通过选择多个标记来对多个实例进行快照。下面是一个带有2个tagsi的示例,因此它应该同时匹配:
```
>;/simplec2snap.py-t name'instance*'-t env prod
```


./simplec2snap.py-t name'instance*'-t env prod-i i-ad0fcc4b
`````

\criterials file


它应该是这样的:
``ini
[默认]
aws\u region=<;region>;
aws安全访问密钥id=<;密钥id>;
aws安全访问密钥key=<;访问密钥gt;




[profile profile1]
aws\aws\region=<;region>;
>
\aws安全访问密钥id=<;密钥id=<;键id=>;



_id>;
aws_secret_access_密钥=<;access_key>;
```
默认值应位于'~/.aws_cred'。您可以使用"-c"参数和"-p"重写此参数,以将配置文件的实现指定为方括号。


\dry run mode

使用dry run mode(默认启用)查看在选择标记名或实例时将执行的操作:
```
>;./simplec2snap.py-t name"instance name*"
2015-01-26 17:05:25954[info]==启动试运行模式==
2015-01-26 17:05:25954[info]连接到aws
2015-01-26 17:05:25955[info]获取实例信息
2015-01-26 17:05:28,341[info]正在处理实例i-e16cc205(instance-name2)
2015-01-26 17:05:28341[info]为vol-fa415bfd(/dev/sdb)生成的热快照
2015-01-26 17:05:28341[info]为vol-22465c25(/dev/sda)生成的热快照
2015-01-26 17:05:28,341[info]正在处理实例I-6F6EC08B(instance-name1)
2015-01-26 17:05:28341[info]为vol-9D465C9A(/dev/sda)生成的热快照
2015-01-26 17:05:28341[info]为vol-9C465C9B(/dev/sdb)生成的热快照
```

然后添加'-u'作为运行模式:
```
>;/simplec2snap.py-t name"instance name*"-u
2015-01-26 17:06:19163[info]==启动运行模式==
2015-01-26 17:06:19163[info]连接到aws
2015-01-26 17:06:19163[info]获取实例信息
2015-01-26 17:06:21,083[info]正在处理实例i-e16cc205(instance-name2)
2015-01-26 17:06:21352[info]为vol-fa415bfd(/dev/sdb)生成的热快照-snap-35adb8c4
2015-01-26 17:06:21587[info]为vol-22465c25(/dev/sda)生成的热快照-snap-36adb8c7
2015-01-26 17:06:21,587[info]正在处理实例I-6F6EC08B(instance-name1)
2015-01-26 17:06:21832[info]为vol-9D465C9A(/dev/sda)制作的热快照-snap-3cadb8cd
2015-01-26 17:06:22,087[info]为vol-9c465c9b(/dev/sdb)创建的热快照-snap-21adb8d0
`````

但是,在某些情况下,这可能不是最佳选择,例如用于数据库。为了得到你的完全一致的快照r ec2如果附加了ebs,则必须创建一个冷快照,其中包括关闭、快照和启动实例。

为此,必须添加'-h'选项:
````
>;/simplec2snap.py-t name"instance name*"-u-h
2015-01-26 17:07:10,281[info]==启动运行模式==
2015-01-26 17:07:10281[info]连接到AWS
2015-01-26 17:07:10282[info]获取实例信息
2015-01-26 17:07:12490[info]处理实例I-E16CC205(实例名2)
2015-01-26 17:07:12,490[info]实例将被关闭
2015-01-26 17:07:48871[info]实例i-e16cc205现在已停止!
2015-01-26 17:07:49134[info]为vol-fa415bfd(/dev/sdb)制作的冷快照-snap-a8afba59
2015-01-26 17:07:49379[info]为vol-22465c25(/dev/sda)制作的冷快照-snap-adafba5c
2015-01-26 17:07:49379[info]实例将启动
2015-01-26 17:08:20,565[info]实例I-E16CC205正在运行!
2015-01-26 17:08:20565[info]正在处理实例I-6F6EC08B(instance-name1)
2015-01-26 17:08:20565[info]实例将被关闭
2015-01-26 17:08:51617[info]实例I-6F6EC08B现在已停止!
2015-01-26 17:08:51853[info]为vol-9d465c9a(/dev/sda)制作的冷快照-snap-b1aebb40
2015-01-26 17:08:52098[info]为vol-9c465c9b(/dev/sdb)制作的冷快照-snap-b2aebb43
2015-01-26 17:08:52098[info]实例将启动
2015-01-26 17:09:09,467[INFO]实例I-6F6EC08B正在运行!
```

在同一个实例中捕捉大量时间可能不是很有趣。这就是为什么您可以使用'-l'命令,后跟所需快照的数量来限制快照的数量。如果我只想要一个:
````
>;/simplec2snap.py-t name"instance name*"-l 1
2015-01-26 17:11:27561[info]==启动试运行模式==
2015-01-26 17:11:27561[info]连接到aws
2015-01-26 17:11:27562[info]获取实例信息
2015-01-26 17:11:29,659[info]处理实例i-e16cc205(instance-name2)
2015-01-26 17:11:29659[info]为vol-fa415bfd(/dev/sdb)生成的热快照
2015-01-26 17:11:29659[info]为vol-22465c25(/dev/sda)生成的热快照
2015-01-26 17:11:29,659[info]正在处理实例I-6F6EC08B(instance-name1)
2015-01-26 17:11:29660[info]已达到请求的快照限制:1
````

一般来说,因为它可能是从配置管理器构建的,而您根本不关心它。因此,目标是从快照列表中删除它,因此可以使用'-o'选项:

`````
>;/simplec2snap.py-t name"instance name*"-o
2015-01-26 17:11:50757[info]==启动干运行模式==
2015-01-26 17:11:50757[info]连接到aws
2015-01-26 17:11:50,758[info]获取实例信息
2015-01-26 17:11:52708[info]处理实例i-e16cc205(实例名称2)
2015-01-26 17:11:52708[info]为vol-fa415bfd(/dev/sdb)生成的热快照
2015-01-26 17:11:52,708[info]处理实例I-6F6EC08B(instance-name1)
2015-01-26 17:11:52708[info]为vol-9C465C9B(/dev/sdb)制作的热快照
````

根据需要选择最佳备份。


\您需要指定2个参数:

*数字:指定一个日期、星期的数字…它在第二个参数
*时间元素中定义:指定s(秒)、m(分)、h(小时)、d(天)、w(周)、m(月)、y(年)

因此,例如,如果要将快照保留3周并删除旧的快照,则必须设置为:3w。

我想删除10天以上的快照:
```
&g t;/simplec2snap.py-t name"instance name*"-n-g 10 d
2015-01-28 10:12:11216[info]==启动干运行模式==
2015-01-28 10:12:11217[info]连接到aws
2015-01-28 10:12:11,217[信息]获取实例信息
2015-01-28 10:12:13080[信息]处理实例i-e16cc205(pmavro-test2)
2015-01-28 10:12:14109[信息]删除快照snap-b427c144(vol-fa415bfd/dev/sdb)
2015-01-28 10:12:14,205[信息]删除快照snap-a327c153(vol-22465c25/dev/sda)
2015-01-28 10:12:14205[信息]处理实例i-6f6ec08b(pmavro-test1)
2015-01-28 10:12:14321[信息]删除快照snap-a627c56(vol-9d465c9a/dev/sda)
2015-01-28 10:12:14,440[信息]删除快照快照snap-a927c159(vol-9c465c9b/dev/sdb)
````


但您可以在同一行上请求制作快照并删除旧快照:
```
&g t;/simplec2snap.py-t name"instance name*"-g 10 m
2015-01-26 17:22:43263[info]==启动干运行模式==
2015-01-26 17:22:43263[info]连接到aws
2015-01-26 17:22:43,264[信息]获取实例信息
2015-01-26 17:22:46217[信息]处理实例i-e16cc205(实例名称2)
2015-01-26 17:22:46218[信息]为vol-fa415bfd(/dev/sdb)生成的热快照
2015-01-26 17:22:46218[信息]为vol-22465c25(/dev/sda)生成的热快照
2015-01-2617:22:47328[信息]删除快照snap-a8afba59(vol-fa415bfd/dev/sdb)
2015-01-26 17:22:47491[信息]删除快照snap-adafba5c(vol-22465c25/dev/sda)
2015-01-26 17:22:47491[信息]处理实例i-6f6ec08b(instance-name1)
2015-01-26 17:22:47,491[信息]为vol-9d465c9a制作的热快照(/dev/sda)
2015-01-26 17:22:47492[信息]为vol-9c465c9b制作的热快照(/dev/sdb)
2015-01-26 17:22:47669[信息]删除快照snap-b1aebb40(vol-9d465c9a/dev/sda)
2015-01-26 17:22:47,842[info]删除快照snap-b2aebb43(vol-9c465c9b/dev/sdb)
`````


_至少保留给定数量的快照

管理快照保留的另一个解决方案是指定要保留多少快照。例如,如果我有一个实例的每个设备的5个快照,并希望保留最后4个快照:
````
>;/simplec2snap.py-t name"instance name*"-n-d 4
2015-01-28 10:14:02713[info]==启动干运行模式==
2015-01-28 10:14:02,713[info]连接到aws
2015-01-28 10:14:02713[info]获取实例信息
2015-01-28 10:14:04328[info]处理实例i-e16cc205(pmavro-test2)
2015-01-28 10:14:05316[info]删除快照snap-b427c144(vol-fa415bfd/dev/sdb)
2015-01-28 10:14:05,444[info]删除快照snap-a327c153(vol-22465c25/dev/sda)
2015-01-28 10:14:05444[info]处理实例i-6f6ec08b(pmavro-test1)
2015-01-28 10:14:05540[info]删除快照snap-a627c56(vol-9d465c9a/dev/sda)
2015-01-28 10:14:05,654[信息]删除快照快照snap-a927c159(vol-9c465c9b/dev/sdb)
````

./simplec2snap.py
用法:simplec2snap.py[-h][-r region][-k key-u id][-a access-u key]
[-c凭据][-p cred-u配置文件][-i实例ID]
[-t a r g arg[-u][-l限制][-h][-m coldsnap-u超时]
[-o][-g arg[-d保留最后一个快照][-n]
[-f文件][-s[-v级别][-v]


simple ec2快照实用程序


可选参数:
-h,--帮助显示此帮助消息并退出
-r区域,--区域区域
设置aws区域(例如:eu-west-1)(默认值:无)
-k key_id,--key_id
设置aws key id(默认值:无)
-a access_key,--access_key access_key
设置AWS访问密钥(默认值:无)
-c凭据,--credentials凭据
credentials文件路径(默认值:
/home/pmavro/.aws-cred)
-p cred-u配置文件,--配置文件cred_profile
在凭据文件中定义的凭据配置文件
(默认值:默认值)
-i实例_id,--instance实例_id
instance id(例如:i-00000000或全部)(默认值:[])
-t arg arg,--tagsarg arg
选择带值的标记(例如:标记名值)(默认值:
[])
-u,--dry_run定义是否应创建快照或仅执行dry run
(默认值:true)
-l limit,--limit limit
限制快照数量(可与
自动缩放组一起使用)(默认值:-1)
-h,--冷快照生成冷快照以获得更好的一致性
(建议)(默认值:false)
-m冷快照超时,--超时coldsnap-timeout
冷快照期间停止和启动的实例超时(以秒为单位)
(默认值:600)
-o,--没有根设备不快照根设备(默认值:false)
-g arg arg,--max-age arg
要保留的最大快照时间(<;int>;<;s/m/h/d/w/m/y>;)
(例如:1小时)(默认值:[])
-d保留最后一个快照,--保留最后一个快照保持最后一个快照
keep x最后一个快照(默认值:0)
-n,--不保留最后一个快照不要生成快照(当combien to-g
选项时有用)(默认值:false)
-f文件,--file_输出文件
设置输出文件(默认值:none)
-s,--stdout日志输出到控制台(stdout)(默认值:true)
-v级别,--详细级别
详细级别:调试/信息/错误/关键(默认值:
信息)
-v,--版本打印版本号
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException