123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import os
- from datetime import datetime, timedelta
- import ftplib
- from subprocess import Popen, PIPE
- # DB_LIST = ['BDECR', 'BDEDO', 'BDEGT', 'BDEHN', 'BDENI', 'BDEPA', 'BDESV']
- # DB_LIST = ['TestDB', 'backuptest']
- DB_LIST = ['backuptest', 'factormysql']
- DB_USER = 'haproxy'
- DB_PASS = str(os.getenv('QAPASS'))
- DB_HOST = '159.203.104.215'
- BACKUP_PATH = '/backup/'
- def RemoveFile(filename):
- try:
- os.remove(filename)
- return
- except BaseException as ex:
- print(f'FILE REMOVE ERROR {ex}')
- def OpenFTP(server='FACTOR'):
- try:
- if(server == 'FACTOR'):
- ftp = ftplib.FTP("165.227.114.190")
- ftp.login("factor", 'rh$2021')
- ftp.cwd('upload')
- return ftp
- else:
- ## port 2023
- ftp = ftplib.FTP()
- ftp.connect("190.122.187.218", 2023)
- ftp.login("ming", 'dit2020 2020')
- except ftplib.Error as er:
- print(f'FTP open error { er }')
- return
- def DeleteFromSSHStorage(filename):
- try:
- ftp = OpenFTP()
- ftp.delete(filename)
- ftp.close()
- except BaseException as e:
- print(f'FTP DELETE ERROR {e}')
- return
- def lessDate(fecha,dias):
- return ( fecha - timedelta(days=dias)).strftime('%Y-%m-%d')
- def DeleteFactorRH():
- try:
- ftp = OpenFTP()
- NOW = datetime.now()
- PREV = lessDate(NOW,3);
- to_delete_docs = 'factorh_grupodit-' + PREV
- # to_delete_docs = 'factormysql-'
- files = [doc for doc in ftp.nlst() if to_delete_docs in doc ]
- for doc in files:
- ftp.delete(doc)
- ftp.close()
- except Exception as error:
- print(f'FTP FACTOR DELETE ERROR {error}')
- def PutOverSSH(path='/home/ming/CODE/PyKup/backup/BDEDO-20082021-1145.sql',remote='mingmecca.sql'):
- try:
- ftp = OpenFTP()
- with open(path, "rb") as file:
- ftp.storbinary('STOR %s' % remote, file)
- ftp.close()
- RemoveFile(path)
- except BaseException as err:
- print(f"FTP CREATE ERROR {err}")
- return
- def MongoBK():
- BACKUP_PATH = './backup/mongo/'
- try:
- os.stat(BACKUP_PATH)
- except:
- os.mkdir(BACKUP_PATH)
- mongo_url = 'mongodb://QAadmin:QA20172017@165.227.177.95:27017/test001?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false'
- # mongo_url = 'mongodb://QAadmin:QA20172017@165.227.177.95:27017/candidocu_js?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&ssl=false'
- command = 'mongodump --uri ' + mongo_url + ' -o ' + BACKUP_PATH
- with Popen(command, stdout=PIPE, stderr=None, shell=True) as process:
- output = process.communicate()[0].decode("utf-8")
- print(output)
- def MysqlBK():
- BACKUP_PATH = 'backup/mysql/'
- NOW = datetime.now()
- DATETIME = NOW.strftime('%d%m%Y')
- TO_DELETE = ( NOW - timedelta(days=3) ).strftime('%d%m%Y')
- for DB_NAME in DB_LIST:
- # FILE = f'{DB_NAME}-' + DATETIME + '.sql'
- FILE = f'{DB_NAME}-' + DATETIME + '.sql'
- FILE_NAME = BACKUP_PATH + FILE
- try:
- os.stat(BACKUP_PATH)
- except:
- os.mkdir(BACKUP_PATH)
- params = ' --routines=true --triggers=true --quick --compress --skip-lock-tables --verbose '
- command = "mysqldump -h " + DB_HOST + " -u " + DB_USER + " -p" + DB_PASS + " " + DB_NAME + params + " > " + FILE_NAME
- with Popen(command, stdout=PIPE, stderr=None, shell=True) as process:
- output = process.communicate()[0].decode("utf-8")
- print(output)
- PutOverSSH(FILE_NAME, FILE)
- DeleteFromSSHStorage( f'{DB_NAME}-' + TO_DELETE + '.sql' )
- return
- MysqlBK()
- DeleteFactorRH()
- # MongoBK()
- # Backup()
- # PutOverSSH()
|