python脚本备份数据库

# -*- coding:utf-8 -*-
import os
import time
import shutil
import schedule
import datetime
DB_HOST = '127.0.0.1'
DB_USER = 'wyd'
DB_USER_PASSWD = 'wyd'
DB_NAME = r'/mysql/mysqlAll.txt'
BACKUP_PATH = '/mysql/'

class Run_backups:
    def __init__(self):
        self.DATETIME = time.strftime('%Y%m%d-%H%M%S')
        self.TODAYBACKUPPATH = BACKUP_PATH + self.DATETIME
        print("create backup!")
        #创建备份文件夹
        if not os.path.exists(self.TODAYBACKUPPATH):
            os.makedirs(self.TODAYBACKUPPATH)
        print("check databases file")
        self.run()

    def run_backup(self):
        sql_file = open(DB_NAME,"r")
        for dbname in sql_file.readlines():
            dbname = dbname.strip()
            print("backup databases %s" %dbname)
            dumpcmd = "mysqldump -u" + DB_USER + " -p" + DB_USER_PASSWD + " " + dbname + " > " + self.TODAYBACKUPPATH + "/" + dbname + ".sql"
            print(dumpcmd)
            os.system(dumpcmd)
        sql_file.close()
   
    #执行压缩的函数
    def run_tar(self):
        compress_file = self.TODAYBACKUPPATH + ".zip"
        compress_cmd = "zip -r " + compress_file + " " + self.DATETIME
        os.chdir(BACKUP_PATH)
        os.system("pwd")
        os.system(compress_cmd)
        print("compress complete!")
        #删除备份文件夹
        remove_cmd = "rm -rf " + self.TODAYBACKUPPATH
        os.system(remove_cmd)
   
    #备份数据库文件存在就执行备份和压缩,否则退出
    def run(self):
        if os.path.exists(DB_NAME):
            print("start backup of all db listed in file "+DB_NAME)
            self.run_backup()
            self.run_tar()
            print("backup success!")
        else:
            print("database file fail")
            
def rmAssignDir(path, day=3):
    dirs = os.listdir(path)
    current_date = datetime.datetime.utcnow()+datetime.timedelta(hours=8)
    for dir in dirs:
        print (dir)
        _date = dir.split('-')[0]
        _date = datetime.datetime.strptime(_date,"%Y%m%d")+datetime.timedelta(days=day)
        if _date < current_date:
            filename,filetype = os.path.splitext(dir)
            if not filetype:
                shutil.rmtree(path+dir)
                print('delete file success path==%s' % path + dir)
            if filetype == '.zip':
                os.remove(path+dir)
                print('delete compressfile success path==%s'%path+dir)
                


def job(path, day, message='stu'):
    print("I'm working on:", message)
    Run_backups()
    rmAssignDir(path, day)

#定时任务
def runSchedule(job, path, day, message):
    # schedule.every(5).seconds.do(job,path,day,message)
    schedule.every().day.at("23:50").do(job, path, day, message)

if __name__ == '__main__':
    
    day=3
    #打印信息
    message='开始定时任务'
    runSchedule(job, BACKUP_PATH, day, message)
    while True:
        schedule.run_pending()
        time.sleep(1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值