博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 备份压缩传输
阅读量:5145 次
发布时间:2019-06-13

本文共 1754 字,大约阅读时间需要 5 分钟。

# -*- coding:utf-8 -*-

__author__ = 'colin'

#!/usr/bin/env python

#-*- coding:utf-8 -*-
import os,commands
import MySQLdb
import time
import subprocess
import multiprocessing
import paramiko

BKPATH='/data/DB_back'

NOTBK = ['information_schema','test','mysql','performance_schema']
TIME=time.strftime("%Y%m%d%H%M",time.localtime())

dblist = []

sendFile = []
conn=MySQLdb.connect(host='192.168.1.203',user='root',port=3306)
cur=conn.cursor()
cur.execute('show databases;')
result=cur.fetchall()

for line in result:

if line[0] in NOTBK:
line = line[0].strip(line[0])
dblist.append(line)
pass
cur.close()
conn.close()

'''

清掉之前的备份的文件
'''
for i in os.listdir(BKPATH):
if i.endswith('tar.gz'):
try:
os.remove("{0}{1}".format(BKPATH,i))
except NameError:pass

'''
备份文件
'''
def run(cmd):
#p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
res=commands.getstatusoutput(cmd)

pool = []

p = multiprocessing.Pool(processes=2)
for i in range(0,len(dblist)):
if dblist[i] != '':
cmd = '/usr/bin/mysqldump -h 192.168.1.203 -uroot %s --events|gzip > %s%s_%s.sql.gz' % (dblist[i][0], BKPATH, dblist[i][0],TIME)
sendFile.append("%s_%s.sql.gz" % (dblist[i][0],TIME))
#run(cmd)
pool.append(p.apply_async(run,(cmd, )))
p.close()
p.join()

"""

备份到其他服务器
"""
s = paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
t = paramiko.Transport(('192.168.1.220',int(22)))
key = paramiko.RSAKey.from_private_key_file("/root/.ssh/id_rsa")
t.connect(username='root',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
for i in range(0,len(sendFile)):
sftp.put("{0}{1}".format(BKPATH, sendFile[i]),"/data/mysql_backup_1.44/{0}".format(sendFile[i]))
t.close()

转载于:https://www.cnblogs.com/Van214/p/7999084.html

你可能感兴趣的文章
CSS:CSS 实例
查看>>
innodb的存储结构
查看>>
焦点控制
查看>>
python-文件读写操作
查看>>
P1129 [ZJOI2007]矩阵游戏 二分图匹配
查看>>
Git 内部原理之 Git 对象哈希
查看>>
Vue中引入TradingView制作K线图
查看>>
爱历史 - 朝代歌
查看>>
【笔记】Cocos2dx学习笔记
查看>>
PHP设计模式之:单例模式
查看>>
c++输出缓冲区刷新
查看>>
Linux查看CPU和内存使用情况总结
查看>>
session丢失问题
查看>>
Python 批量修改root密码
查看>>
ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1
查看>>
WEB服务器:Apache、Tomcat、JBoss、WebLogic、Websphere、IIS的区别与关系
查看>>
软件工程 speedsnail 冲刺7
查看>>
虚拟机CentOS设置IP
查看>>
Django之ORM多对多表创建方式,AJAX异步提交,分页器组件等
查看>>
Django 之 rest_framework 响应器使用
查看>>