Y direis "¿Para que quiero yo Bash si en windows nunca uso el símbolo del sistema?". Pues a priori puede parecer una herramienta con poca o nula utilidad, pues en Windows es así, pero en Linux abre un gran abanico de posibilidades como el caso concreto que os voy a exponer: generar backups de manera automática.
Hace unas semanas tuvimos problemas en el servidor y se borró por error una de las bases de datos. El último backup tenía dos meses (ejemmm) y se perdieron un montón de datos, para solucionar eso decidí hacerme algunos scripts para generar backups automáticos de la ftp y las bases de datos del servidor.
Empecemos por el backup de la FTP. Para esta tarea utilicé la herramienta wget de linux (en windows no existe nada parecido que yo sepa), y generé un archivo de texto con el siguiente contenido:
#/bin/sh
wget -P $HOME/backups/$(date "+%d-%b-%Y-%Hh%Mm") -r
ftp://usuario:password@ftp.direccion.net/www/blog/*
Como veis no es muy complicado... lo que va detrás de -P indica donde quieres guardar el backup, el [n]$(date "+%d-%b-%Y-%Hh%Mm")[/n] lo que hace es generar un directorio con la fecha en este formato: [n]"30-may-2007-05h00m"[/n], el -r es recursivo (incluye subdirectorios), y luego solo la dirección y directorio que te quieres bajar. Lo más complicado podría resultar escribir la sintaxis del comando date, pero buscando un poco por ahí encontré como hacerlo.
Vale, luego damos permisos de ejecución al archivo con un chmod 777 nombredelarchivo, y solo quedaría ejecutarlo con un ./nombredelarchivo.
Como no queremos ejecutar el archivo manualmente, sino que el ordenador lo haga por nosotros, solo nos queda meter en el cron la orden de que ejecute el programa cada x tiempo. El cron habitualmente es un demonio que esta instalado, y para ejecutar el script solo hay que programarlo en el cron. Hay aplicaciones como kcron o gcron que lo hacen de forma visual yo preferí el "hard way":
krasny@kFijo:~$ crontab -e
y en este metí la siguiente línea:
0 5 15,30 * * /home/krasny/backups/backupblog.sh
Que ejecuta el script los días 15 y 30 de cada mes a las 5 am de la mañana (yo tengo el ordenador siempre encendido), para ver el formateo del crontab podéis ir aqui
Ni que decir tiene que se podrían meter mas copias del mismo script con diferentes directorios en el cron de manera que hiciesemos más backups, o simplemente poner el directorio raiz de la ftp y haríamos un backup completo de toda la ftp, pero esto me parecía exagerado por la cantidad de ancho de banda que consumiría. También se le puede imponer una frecuencia mayor de hasta cada minuto, pero lógicamente para esto sería absurdo.
En la próxima entrega os cuento como hacer los backups de las bases de datos mysql.
[ agregar comentario ] ( 7 opciones ) | [ 0 Trackback ] | Enlace permanente |




( 3 / 147 )


Calendario



