Tengo un NAS, hacia donde realizo copias de seguridad de fotos, blogs, notas, comprobantes, y documentos en general.
Para esta tarea pueden nombrarse incontables herramientas especialmente pensadas y diseñadas a tal fin.
Sin embargo yo utilizo el siguiente método desde hace ’eones’ y todavía no me falló. No obstante eso, estaba pensando en mejorarlo un poco y finalmente decidí hacer algo parecido pero en Python. Cabe aclarar que no hace exactamente lo mismo pero es un buen apaño para facilitar las copias de seguridad.
Mi script primitivo en Bash:
👍🏻 Lo bueno: Muy sencillo, claro y super-configurable.
👎🏻 Lo malo: Pide contraseña cada vez que se conecta al servidor (requiere configuración para conexión sin contraseña)
import subprocess
# Configuración del archivo de texto y el servidor remoto
file_path = 'backup.conf' # Reemplaza con la ruta de tu archivo de texto
remote_server = 'javier@nas' # Reemplaza con tu servidor remoto
remote_folder = '/backup' # Reemplaza con la carpeta de destino en el servidor remoto
# exclude_list = ["*~", ".*~", "#*#", ".#*", "*.o", ".Trash", ".dropbox", ".st*"]
def create_backup_from_file(file_path, remote_server, remote_folder):
with open(file_path, 'r') as f:
local_folders = [line.strip() for line in f if not line.startswith('#')]
create_backup(local_folders, remote_server, remote_folder)
def create_backup(local_folders, remote_server, remote_folder):
for folder in local_folders:
# Construir el comando rsync
command = [
'rsync',
'-avz',
folder,
f'{remote_server}:{remote_folder}'
]
# Ejecutar el comando rsync
subprocess.run(command)
# Crear las copias de seguridad a partir del archivo de texto
create_backup_from_file(file_path, remote_server, remote_folder)
Archivo de configuración donde se especifican las carpetas a resguardar:
Debo aclarar que estas líneas de código van cambiando y sufriendo modificaciones casi todo el tiempo. En algún momento, por ejemplo, decido que ya no quiero tener un script con un archivo de configuración por separado y lo cambio.