#!は/ usr / binに/ envをpython3.6 #コーディング= UTF-8 インポートのOS インポートurllib.request、JSON、日時、時間の インポートSSL aliyunsdkcore.clientインポートAcsClientから aliyunsdkr_kvstore.request.v20150101.DescribeBackupsRequest輸入DescribeBackupsRequestから aliyunsdkr_kvstoreから。 request.v20150101.DescribeInstancesRequest輸入DescribeInstancesRequest クライアント= AcsClient( '********************'、「*************** ***********」、 'CN-XXX') #获取阿里云Redisの实例列表 DEF get_redis_insts(): リクエスト= DescribeInstancesRequest() request.set_accept_format( 'JSON') request.set_PageNumber(1) request.set_PageSize(100) 応答= client.do_action_with_exception(リクエスト) 戻りjson.loads(応答)に.get( 'インスタンス')[ 'KVStoreInstance'] #ダウンロードは、実施例に係るバックアップIDのリストを取得 DEFのget_bak_urls(instId、のstartTime、endTimeは): リクエスト= DescribeBackupsRequest( ) request.set_accept_format( 'JSON') request.set_StartTime(のstartTime) request.set_EndTime(endTimeは) request.set_InstanceId(instId) 応答= client.do_action_with_exception(要求) 戻りjson.loads(応答)に.get( 'バックアップ')。 GET( 'バックアップ') ローカルにダウンロードバックアップにダウンロードアドレスに従って#(IDCバックアップ・マシン111.11.11.11) DEF(folder_path、URL)をget_redis_bak: IFないos.path.exists(folder_path): 印刷(「選択したフォルダが存在しません、それを作成してみてください。」) os.makedirs(folder_path) ファイル名= url.split( '/')[ -1] .split( '?') [0] ファイルパス= folder_path + '/' +ファイル名 os.path.exists(ファイルパス)の場合: 印刷( "ファイルが既に存在しているスキップします。") 他: 試してみる: 印刷( "ファイルをダウンロードしてみてください:{}" .format(URL)) ssl._create_default_https_context = ssl._create_unverified_context#导入SSL时关闭证书验 urllib.request.urlretrieve(URL、ファイル名=ファイルパス) プリント)( "完了" 電子などの例外を除い: ダウンロードするときに印刷(「エラーが発生しましたファイル、エラーメッセージ: ") プリント(E) #清理30天前的备份文件 デフfileremove(ファイル名、remove_time): timeInt =はos.path。getmtime(ファイル名) 秒= remove_time * 86400 CC = time.time() もしINT(timeInt)<INT(CC)-int(秒): os.remove(ファイル名) DEF delFilesOfDirAndSubdir(FILEDIR、deltime): もしos.path.isfile(FILEDIR ): fileremove(FILEDIR、deltime) 他: トライ: iに対して)os.listdir(FILEDIR中: もしos.path.isfile(FILEDIR + '/' + I): fileremove(FILEDIR + '/' + I、deltime) 他: new_dir = FILEDIR + '/' + I delFilesOfDirAndSubdir(new_dir、deltime) 電子などの例外を除いて: プリント( "エラーが発生したときに削除ファイル、エラーメッセージ:") 印刷(e)の 場合__name__ == "__メイン__": delFilesOfDirAndSubdir( '/バックアップ/ aliyun_redis_bak'、30) 今= datetime.datetime.now() thirtyDaysAgo =(datetime.datetime.now() - datetime.timedelta(日= 30)) endTimeは= now.strftime( "%Y- %M-%のdT%H:%MZ ") のstartTime = thirtyDaysAgo.strftime(" %Y-%M-%のdT%H:%MZ ") get_redis_instsにおけるKVSのための(): プリント( 'のBAKSを取得開始します。' + KVS [ 'のInstanceName']) bakList = get_bak_urls(KVS [ 'のInstanceId']、のstartTime、endTimeは) のためにbakListでBAK: get_redis_bak(KVS [ 'のInstanceName']、BAK [」BackupDownloadURL ']) ( '末端がのBAKSを得る: '+ KVS ['のInstanceNameを'])を印刷 aliyun-のpython-SDKコア-V3をインストール#pip aliyun-のpython-SDK-R-kvstoreインストール#pip