开发者社区> 问答> 正文

RDS备份文件自动下载工具-v1.0,已更新~支持交互式设置

目前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


展开
收起
一开始 2015-01-21 11:52:20 20385 0
12 条回答
写回答
取消 提交回答
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    必须赞
    2018-05-19 09:39:40
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    可以使用这个项目
    git@github.com:francisar/rds_manager.git
    自动下载阿里云凌晨备份的物理文件,随时可以通过docker将备份的物理文件解压并启动
    2015-11-25 13:29:12
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    为什么下载地址无法下载呢
    2015-10-23 18:23:15
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置

    报这个错
    IllegalTimestamp
    The input parameter "Timestamp" that is mandatory for processing this request is not supplied.
    2015-07-15 16:56:30
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    系统 CENTOS6.5

    当python getfile.py时,正常运行;
    把getfile.py交互改为固定值,也正常运行;

    一旦用crontab定时任务跑getfile.py时 (crontab脚步运行其他脚步正常,运行getfile.py时跑到38行报错),报错;
    错误代码:
    decode() argument 1 must be string , not None
    出错行在( 38):
    # -*- 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)





    代码中引用包: aliyun.api.Rds20140815DescribeBackupsRequest()
    包内init code :
    '''
    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'







    2015-06-08 13:32:00
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    是啊,链接已经木用,难道是传说中的和谐了?
    2015-06-01 17:44:55
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    下载链接失效
    2015-05-14 16:57:17
    赞同 展开评论 打赏
  • vf
    ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    下载链接失效了呢
    2015-05-13 11:35:42
    赞同 展开评论 打赏
  • 回3楼therez的帖子
    这个怎么搞啊,用系统自带的python 2.4.3 运行   提示 缺少 json 模块, 有大哥能提供点帮助么
    2015-03-17 14:07:42
    赞同 展开评论 打赏
  • 专注于云计算相关的安全问题以及网络问题。坚信:“不忘初心,方得始终”
    ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    建议把需要加载的import的模块全都封装好,以防使用的时候缺少模块无法使用。
    2015-03-17 13:54:23
    赞同 展开评论 打赏
  • ReRDS备份文件自动下载工具-v1.0已更新支持交互式设置
    好东西
    2015-02-02 15:41:15
    赞同 展开评论 打赏
  • 回楼主一开始的帖子
    给个赞
    2015-01-21 13:13:02
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像