#!/usr/bin/env python # -*- coding: utf-8 -*- # pip install -U cos-python-sdk-v5 import os import sys import tarfile import subprocess from qcloud_cos import CosConfig from qcloud_cos import CosS3Client secret_id = '' secret_key = '' region = '' bucket = '' token = '' backup_dir = "/home/mi/Public" # 需要备份的目录 backup_filename = "backup.tar.gz" temp_dir = "/tmp/backup/" sql_filename = "backup.sql" MYSQL_USER = "root" MYSQY_PASSWORD = "password" def put(client, file_path): if not os.path.exists(file_path): raise Exception("file not exist") with open(file_path, 'rb') as f: r = client.put_object( Bucket=bucket, Body=f, Key=os.path.basename(file_path), ) print r def get(client, file_name): r = client.get_object( Bucket=bucket, Key=file_name, ) r['Body'].get_stream_to_file(file_name) # r['Body'].get_raw_stream() 流 if __name__ == '__main__': config = CosConfig(Secret_id=secret_id, Secret_key=secret_key, Region=region) client = CosS3Client(conf=config) try: if not os.path.isdir(temp_dir): os.mkdir(temp_dir) except IOError, err: print err sys.exit() full_temp = os.path.join(temp_dir, backup_filename) tar = tarfile.open(name=full_temp, mode='w:gz') for dirpath, dirnames, filenames in os.walk(backup_dir): for file in filenames: full_path = os.path.join(dirpath, file) tar.add(full_path, arcname=file, recursive=False) try: # 请自行更改mysqldump路径 cmd = '/usr/bin/mysqldump -u' + MYSQL_USER + ' -p' + MYSQY_PASSWORD + ' --all-databases > ' + temp_dir + '/' + sql_filename h = subprocess.call(cmd) if h[0] != 0: print "error mysql backup" else: full_path = os.path.join(temp_dir, sql_filename) tar.add(full_path, arcname=sql_filename, recursive=False) except IOError, error: print error tar.close() put(client, full_temp) # get(client, '') os.remove(full_temp)