Python自動備份腳本


目的:為了解決修改關鍵或者基礎數據導致項目出現問題,所以,備份是很有必要的,並且解決備份文件過多的問題。

前提:備份的本機必須安裝Mysql,否則Mysql命令報錯。

使用:linux一般自帶python,執行腳本:python sql_bak.py 即可。

   (PS: 如果不小心python后面沒輸入內容,可輸入exit()即可推薦python命令行)

# -*- coding: utf-8 -*-
# Import required python libraries
# pancx 2019-04-10
import os
import time
import datetime
import shutil
# MySQL database details to which backup to be done. Make sure below user having enough privileges to take databases backup.

#數據庫ip
DB_HOST = "www.tencentcdb.com"
#數據庫端口
DB_PORT = "10111"
#這里填數據庫用戶名
DB_USER = "root"
#數據庫密碼
DB_USER_PASSWORD = "\'(ink^zm+36ygZvgXPjq#*k_Xd=&18!\'"
#需要備份的數據庫
DB_NAMES = "order,act,ggg"
#需要備份到的路徑
BACKUP_PATH = "/sqlbak/"

# Getting current datetime to create seprate backup folder like "20190412".
DATETIME = time.strftime('%Y%m%d')
TODAYBACKUPPATH = BACKUP_PATH + DATETIME

# Checking if backup folder already exists or not. If not exists will create it.
if not os.path.exists(TODAYBACKUPPATH):
    os.makedirs(TODAYBACKUPPATH)

today = datetime.datetime.now()
for item in os.listdir(BACKUP_PATH):
    try:
        foldername = os.path.split(item)[1]
        day = datetime.datetime.strptime(foldername, "%Y%m%d")
        diff = today - day
        if diff.days >= 90:
            print('- - - del folder three months ago: ' + BACKUP_PATH + item)
            shutil.rmtree(BACKUP_PATH + item)
    except:
        pass

# Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME.
DBS = DB_NAMES.split(",")
for DB_NAME in DBS:
    # Starting actual database backup process.
    DB_PATH = TODAYBACKUPPATH + "/" + DB_NAME + ".sql.gz"

    print("- - - baking '" + DB_NAME + ".sql'")
    dumpcmd = "mysqldump -h" + DB_HOST + " -P" + DB_PORT + " -u" + DB_USER + " -p" + DB_USER_PASSWORD + " --databases " + DB_NAME + " --set-gtid-purged=OFF |gzip > " + DB_PATH
    os.system(dumpcmd)

print("- - - Your backups has been created in '" + TODAYBACKUPPATH + "' directory")

# mysqldump: [Warning] Using a password on the command line interface can be insecure. 在命令行輸入密碼,就會提示這些安全警告信息(警告信息可忽略)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM