What's new

Bienvenido!

Al registrarse con nosotros, podrá discutir, compartir y enviar mensajes privados con otros miembros de nuestra comunidad.

Registrar cuenta Discord Nosetu Games

Juegos: Argentum Online Forever, Kicks Online 3, Narcs, Revival AO y más...

APORTE Códigos AutoBackUp: Automatiza tus Backups con Protección y Subida a FTP

APORTE

Sun

Administrator
Admin
Joined
Sep 25, 2022
Messages
109

Automatiza tus Backups con Protección y Subida a FTP 🚀


¿Cansado de gestionar manualmente tus respaldos?
Este script en Python te facilita todo el proceso: copia tus carpetas, las comprime en un archivo ZIP protegido con contraseña y las sube automáticamente a tu servidor FTP. Ideal para administradores de sistemas, desarrolladores y cualquier persona que quiera asegurar sus datos de forma eficiente.


Características clave:
✅ Compresión ZIP con contraseña para mayor seguridad.
✅ Nombres de archivos dinámicos basados en la fecha (ejemplo: diciembre-6-2024.zip).
✅ Progreso visual en tiempo real para compresión y subida al FTP.
✅ Limpieza automática de archivos temporales tras completar el backup.

Código:
import os import shutil import pyzipper from ftplib import FTP from datetime import datetime import calendar from tqdm import tqdm def backup_and_upload(folder_to_backup): # Configuración del FTP FTP_HOST = "ftp.tuservidor.com" FTP_USER = "tu_usuario" FTP_PASS = "tu_contraseña" FTP_REMOTE_DIR = "/ruta/en/ftp" # Crear carpeta temporal para el backup print("Creando carpeta temporal para el backup...") temp_backup_dir = "/tmp/backup_temp" if os.path.exists(temp_backup_dir): shutil.rmtree(temp_backup_dir) os.makedirs(temp_backup_dir) # Copiar la carpeta a la ubicación temporal print(f"Copiando la carpeta '{folder_to_backup}' a la ubicación temporal...") backup_folder_name = os.path.basename(folder_to_backup) temp_folder = os.path.join(temp_backup_dir, backup_folder_name) shutil.copytree(folder_to_backup, temp_folder) # Crear el archivo ZIP con contraseña print("Comprimiendo la carpeta en un archivo ZIP con contraseña...") now = datetime.now() month_name = calendar.month_name[now.month].lower() zip_filename = f"{month_name}-{now.day}-{now.year}.zip" zip_filepath = os.path.join(temp_backup_dir, zip_filename) password = b"chuekos" # Barra de progreso para la compresión total_files = sum([len(files) for _, _, files in os.walk(temp_folder)]) with pyzipper.AESZipFile(zip_filepath, 'w', compression=pyzipper.ZIP_DEFLATED, encryption=pyzipper.WZ_AES) as zipf: zipf.setpassword(password) with tqdm(total=total_files, desc="Comprimiendo archivos", unit="file") as pbar: for root, dirs, files in os.walk(temp_folder): for file in files: file_path = os.path.join(root, file) arcname = os.path.relpath(file_path, temp_folder) zipf.write(file_path, arcname) pbar.update(1) print(f"Archivo ZIP creado: {zip_filepath}") # Subir el archivo ZIP al servidor FTP print("Conectando al servidor FTP y subiendo el archivo ZIP...") try: ftp = FTP(FTP_HOST) ftp.login(FTP_USER, FTP_PASS) ftp.cwd(FTP_REMOTE_DIR) # Barra de progreso para la subida file_size = os.path.getsize(zip_filepath) with open(zip_filepath, "rb") as f: with tqdm(total=file_size, desc="Subiendo al FTP", unit="B", unit_scale=True) as pbar: def callback(data): pbar.update(len(data)) ftp.storbinary(f"STOR {zip_filename}", f, callback=callback) print(f"Backup {zip_filename} subido correctamente al servidor FTP.") ftp.quit() except Exception as e: print(f"Error al subir el archivo al FTP: {e}") finally: # Limpiar carpeta temporal print("Limpiando archivos temporales...") if os.path.exists(temp_backup_dir): shutil.rmtree(temp_backup_dir) print("Proceso completado.") # Solicitar la ruta de la carpeta a respaldar if __name__ == "__main__": folder_path = input("Introduce la ruta de la carpeta a respaldar: ") if os.path.exists(folder_path): backup_and_upload(folder_path) else: print("La ruta proporcionada no existe. Por favor verifica e intenta de nuevo.")

Github:
 
Top