Commit dfe4033f by Javier

anyado subida de BK al nas4

parent c11455af
......@@ -5,3 +5,7 @@ PASSWORD_SSH_SOPORTE='_RW!2k19'
DB_USER_SOPORTE = 'soporte'
DB_PASSWORD_SOPORTE = '_RW!2k14'
DB_NAME_SOPORTE = 'soporte'
USER_SFTP_PBX=admin
PWD_SFTP_PBX=_RW!2k14
from env import getenv
import subprocess
from datetime import datetime
from datetime import datetime, timedelta
import pathlib
from ftplib import FTP
import os
def create_backup_database_soporte():
"""
......@@ -23,6 +24,62 @@ def create_backup_database_soporte():
subprocess.run(command, stdout=f)
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
if __name__ == '__main__':
#Crea copia de seguridad y lo almacena en la carpeta backups
create_backup_database_soporte()
#Sube a Pcloud la backups
upload_backups_soporte_pcloud = upload_solo_pcloud_sp(True)
if upload_backups_soporte_pcloud:
#Borra fichero en Pcloud si su fecha de creación es anterior a 25 dias
delete_file_date()
\ No newline at end of file
correct = upload_sftp_file()
if correct:
#Sube a Pcloud la backups
upload_backups_soporte_pcloud = upload_solo_pcloud_sp(True)
if upload_backups_soporte_pcloud:
#Borra fichero en Pcloud si su fecha de creación es anterior a 25 dias
delete_file_date()
\ No newline at end of file
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