Commit dfe4033f by Javier

anyado subida de BK al nas4

parent c11455af
...@@ -5,3 +5,7 @@ PASSWORD_SSH_SOPORTE='_RW!2k19' ...@@ -5,3 +5,7 @@ PASSWORD_SSH_SOPORTE='_RW!2k19'
DB_USER_SOPORTE = 'soporte' DB_USER_SOPORTE = 'soporte'
DB_PASSWORD_SOPORTE = '_RW!2k14' DB_PASSWORD_SOPORTE = '_RW!2k14'
DB_NAME_SOPORTE = 'soporte' DB_NAME_SOPORTE = 'soporte'
USER_SFTP_PBX=admin
PWD_SFTP_PBX=_RW!2k14
from env import getenv from env import getenv
import subprocess import subprocess
from datetime import datetime from datetime import datetime, timedelta
import pathlib
from ftplib import FTP
import os
def create_backup_database_soporte(): def create_backup_database_soporte():
""" """
...@@ -23,6 +24,62 @@ def create_backup_database_soporte(): ...@@ -23,6 +24,62 @@ def create_backup_database_soporte():
subprocess.run(command, stdout=f) subprocess.run(command, stdout=f)
print('Finalizada copia base de datos soportes') print('Finalizada copia base de datos soportes')
def eliminar_archivos_antiguos_ftp(ftp):
"""
Elimina archivos antiguos en un directorio FTP si son anteriores a 'dias'.
:param ftp: Objeto de conexión FTP
:param dias: Número de días para considerar un archivo como antiguo
"""
# Obtiene la lista de archivos en el directorio
archivos = ftp.nlst()
# Fecha límite para la eliminación de archivos
fecha_limite = datetime.now() - timedelta(days=7)
for archivo in archivos:
# Obtiene la información del archivo
try:
detalle_archivo = ftp.sendcmd(f'MDTM {archivo}')
fecha_modificacion_str = detalle_archivo[4:].strip()
fecha_modificacion = datetime.strptime(fecha_modificacion_str, "%Y%m%d%H%M%S")
# Compara la fecha de modificación con la fecha límite
if fecha_modificacion < fecha_limite:
print(f"Eliminando archivo antiguo: {archivo} (Modificado el: {fecha_modificacion})")
ftp.delete(archivo)
except Exception as e:
print(f"No se pudo obtener la fecha de {archivo}: {e}")
def upload_sftp_file():
"""Subo al ftp la copia de seguridad de la base de datos de soporte almacenada en la carpeta backups.
Return: list-> Devuelvo una lista con las rutas locales de los ficheros que almacenamos en el ftp.
"""
path_dir_backups = pathlib.Path('/home/rentel/soporte-backup-db/backups').absolute()
contenido_backup = os.listdir(path_dir_backups)
file_upload = []
if len(contenido_backup) != 0:
# Creo conexión con el filecilla recorro contenido backup subiendo lo que encuentre
ftp = FTP('192.168.2.230') # connect to host, default port
ftp.login(user=getenv('USER_SFTP_PBX'), passwd=getenv('PWD_SFTP_PBX'))
directorio_almacenamiento_ftp = 'DBsoporte'
ftp.cwd(directorio_almacenamiento_ftp)
for file_backup in contenido_backup:
ftp.storbinary(
'STOR ' + file_backup, open(os.path.join(path_dir_backups, file_backup), 'rb'))
file_upload.append(os.path.join(
path_dir_backups, file_backup))
print(f'fichero {file_backup} subido a ftp carpeta DBsoporte')
eliminar_archivos_antiguos_ftp(ftp)
ftp.quit()
return True
else:
print('Directorio backups vacio')
return False
from create_backup_db_soporte import create_backup_database_soporte from create_backup_db_soporte import create_backup_database_soporte, upload_sftp_file
from upload_pcloud_backup import upload_solo_pcloud_sp, delete_file_date from upload_pcloud_backup import upload_solo_pcloud_sp, delete_file_date
if __name__ == '__main__': if __name__ == '__main__':
#Crea copia de seguridad y lo almacena en la carpeta backups #Crea copia de seguridad y lo almacena en la carpeta backups
create_backup_database_soporte() create_backup_database_soporte()
correct = upload_sftp_file()
if correct:
#Sube a Pcloud la backups #Sube a Pcloud la backups
upload_backups_soporte_pcloud = upload_solo_pcloud_sp(True) upload_backups_soporte_pcloud = upload_solo_pcloud_sp(True)
if upload_backups_soporte_pcloud: if upload_backups_soporte_pcloud:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment