目前RDS的下载必须登陆控制台点备份与恢复,然后再点下载才能获取到下载地址,比较不方便,所以决定写一下自动下载的脚本,目前v1.0版本已经发布了,支持交互式输入参数了,话不多说,请往下看
1. 设置access key ,打开 getfile.py(英文版是getfile-en.py)考虑到access key基本是不变的,所以设置一次就够了
aliyun.setDefaultAppInfo("id", "key")
2. 运行脚本,直接在命令行里面运行
Python getfile.py 即可,会有信息打印出来,根据提示进行相关的参数输入即可
3.开始下载 会有类似下面这样的提示
从'2015-01-18T00:00Z'到'2015-01-18T05:00Z',有0个备份文件可以下载 ,正在下载,请稍
候,
下载完成,请查看脚本运行的当前目录下是否已经成功下载文件
提示设置access key ,然后打印从你设置的开始时间到结束时间这一段时间内是否有备份文件,如果有就会自动下载,下载目录是你的脚本运行目录,我演示的设置的是一个没有备份的时间段.
4. 注意:import的模块都是必装的,下载的文件默认直接打开是只能看到my.cnf的,解压方式跟官网提供的一样 tar –izxvf backupfilename.tar.gz 或者使用解压脚本
Windows 解压工具
http://help.aliyun.com/view/11108238_13494673.html?spm=5176.7224493.1997283433.13.Ejv9gV
RDS备份恢复到本地的方法
http://help.aliyun.com/view/13440586.html?spm=5176.7114037.1996646101.3.ZrjgPL&pos=2
下载地址
http://aliyunbbs123.oss-cn-hangzhou.aliyuncs.com/muyuan/rds_getbackupfilev1.0.zip
decode() argument 1 must be string , not None
# -*- coding: utf-8 -*-
'''
Created on 2015-1-27
@author: muyuan
'''
import sys,os,shutil,string
import re
import urllib,urllib2,requests
import datetime,time
import aliyun.api
#这里写id 和 密钥
aliyun.setDefaultAppInfo("id", "secret")
print u"请先设置aliyun.setDefaultAppInfo的Access Key ID和Access Key Secret"
print u"请输入您的RDS所在区域,如cn-hangzhou"
prompt = "Aliyun>"
my_diqu = raw_input(prompt)
print u"请输入您的RDS实例名"
my_rdsname = raw_input(prompt)
print u"请输入您要下载备份的开始时间如2015-01-15"
my_begintime = raw_input(prompt)
print u"请输入您要下载的备份结束时间如2015-01-18"
my_overtime = raw_input(prompt)
#查询备份信息,设置相关条件
a = aliyun.api.Rds20140815DescribeBackupsRequest()
a.RegionId = my_diqu #% (diqu)
a.DBInstanceid = my_rdsname # % (rdsname)
a.StartTime = my_begintime + "T00:00Z" # % (begintime)
a.EndTime = my_overtime + "T00:00Z"
#获取备份列表
try:
f = a.getResponse() # 此处报错: decode() argument 1 must be string , not None
if("Code" in f):
print("Fasle")
print(f["Code"])
print(f["Message"])
else:
f = a.getResponse() # 此处报错: decode() argument 1 must be string , not None
# print(f)
f = str(f)
#格式化输出
# b=re.compile(r"(http://.*?)',")
my_re = re.compile(r"(http://.*?)',")
#正则匹配
print my_re.findall(f)
my_data = my_re.findall(f)
my_len = len(my_data) #计算list的元素数
###开始下载
# print "%r~%r,you have %r backup file ,start download,please wait," % (a.StartTime, a.EndTime, d)
print u"从%r到%r,有%r个备份文件可以下载 ,正在下载,请稍候," % (a.StartTime, a.EndTime, my_len)
my_url = my_data
for m in my_url:
# u = urllib2.urlopen(m)
# y = u.read()
urllib.urlretrieve(m, "muyuan.tar.gz")
now = time.strftime("%Y%m%d-%H%M%S")
newname = now + ".tar.gz"
shutil.move("muyuan.tar.gz",newname)
print u"下载完成,请查看脚本运行的当前目录下是否已经成功下载文件"
except Exception,e:
print(e)
'''
Created by auto_sdk on 2014-10-22 12:49:31
'''
from aliyun.api.base import RestApi
class Rds20140815DescribeBackupsRequest(RestApi):
def __init__(self,domain='rds.aliyuncs.com',port=80):
RestApi.__init__(self,domain, port)
self.OwnerId = None
self.OwnerAccount = None
self.ResourceOwnerAccount = None
self.BackupId = None
self.BackupMode = None
self.BackupStatus = None
self.DBInstanceId = None
self.EndTime = None
self.PageNumber = None
self.PageSize = None
self.StartTime = None
def getapiname(self):
return 'rds.aliyuncs.com.DescribeBackups.2014-08-15'
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。