Una de las labores más repetidas por los administradores de servidores es la de respaldos de la base de datos. Cuando se utiliza como servidores de aplicaciones o servidor para motores de base de datos una distribución de Linux me gusta utilizar o recomendar Python, por la sencillez y por la potencia que tiene. En este sencillo ejemplo configuraremos un archivo backup.py para realizar respaldos de una base de datos MySQL y guardarlos en una carpeta. Code: #!/usr/bin/env python import os import time # Configuración de la DDBB username = 'usuario' password = 'MiPassUsuarioDB' hostname = '127.0.0.1' port = 3306 dest_folder = '/home/usuario/folder_respaldo' #Declaramos las base de datos que NO incluiremos en el backup, como las de sistemas, etc. not_backup = ['information_schema', 'test', 'mysql', 'performance_schema'] Una vez que tenemos la configuración de los accesos y el destino de los respaldos aplicamos lógica Code: #Indicamos el formato del archivo por Año, Mes día filestamp = time.strftime('%Y%m%d') #Ejecutamos el comando como salida prompt database_list_command="mysql -u%s -p%s -h %s -P %s --silent -N -e 'show databases'" % (username, password, hostname, port) #Recorremos la lista de las bases de datos en el servidor for database in os.popen(database_list_command).readlines(): database = database.strip() # Condicionamos las bases de datos que NO vamos a realizar respaldo para que no las tome if database in not_backup: continue filename = "%s/%s-%s.sql" % (dest_folder, filestamp, database) # dump + gzip command os.popen("mysqldump -u%s -p%s -h %s -P %s -e --opt -c %s | gzip -c > %s.gz" % (username, password, hostname, port, database, filename)) Para finalizar escribimos en /etc/crontab 0 0 * * * usuario_ejecuta_trabajo python /ruta/backup.py Para descargar el ejemplo: https://pastebin.com/b7uqn3iS
En GNU/Linux, podrias facilmente replicarlo en un shell script. No soy un programador o guionista, aun menos de Python, pero hubiese sido mejor con un Python mas-puro(?). Aunque desconozco si hay librerías o módulos, con la manera de omitir las partes donde dependes de los binarios externos (/usr/bin/mysql;/usr/bin/mysqldump). Espero no molestar con mi comentario. Gracias por el aporte. Saludos! :v
Para nada! esto es para compartir. Con shell script también se puede hacer o mi preferido en C. Hay muchas maneras y creo que esto es parte de los foros, debatir y seguir compartiendo conocimiento