Etiquetas
automatizar, backup, bash, encoding, GNU/Linux, linux, mailer, opensource, respaldos, rsync, swaks, utf-8
Para un sysadmin es imprescindible automatizar las tareas rutinarias, para enfocar la energía en otras actividades, los respaldo de archivos son necesarios en toda organización o vida cotidiana, por lo general los respaldos se almacenan en una ubicación diferente a donde se genera y pasar esta información de un sitio a otro a veces puede llegar a ser tedioso, por lo cual los sysadmin «perezosos» tendemos a automatizar lo más que podamos, en esta oportunidad vamos a diseñar un script que nos permita crear el respaldo y enviarlo a una ubicación remota de forma automática y para ellos nos vamos a valer de un pequeño, pero poderoso script en bash, existen muchas forma de hacerlo y hoy veremos una de ellas.
Tenemos un directorio /opt/archivos el cual queremos respaldar en una ubicación remota:
Podemos hacer un tar para empaquetar y enviar
tar -cvzf respaldo.tar.gz /opt/archivos
Para luego enviarlo vía rsync sobre ssh a la ubicación remota:
rsync -avz -e «ssh -T -c aes128-ctr -o Compression=no -x» respaldo.tar.gz user@192.168.0.250:/opt/Respaldos/
Aquí la forma manual de realizar el respaldo, pero lo que nos interesa es automatizar esta tarea para tener más tiempo libre 😜
Empecemos por crear un archivo .sh con el nombre respaldo.sh
Yo voy a utilizar vim
Ustedes pueden utilizar el editor de su preferencia.
# -*- ENCODING: UTF-8 -*- #!/bin/bash #Scrip Realizado por jparedes rsync -avz -e "ssh -T -c aes128-ctr -o Compression=no -x" respaldo.tar.gz user@192.168.0.250:/opt/Respaldos/ if [ $? -eq 0 ]; then echo " Archivos Borrados Con Exito: " ./enviaremail2.sh fi
Explicando linea por linea seria lago como así:
# -*- ENCODING: UTF-8 -*- Para que podamos utilizar caracteres especiales.
#!/bin/bash con esto llamnos al shell indicando que es un ejecutable.
#Scrip Realizado por jparedes un comentario identificación del Autor.
rsync -avz -e «ssh -T -c aes128-ctr -o Compression=no -x» respaldo.tar.gz user@192.168.0.250:/opt/Respaldos/ la sentencia mas importante del script la que realiza la acción del respaldo.
if [ $? -eq 0 ]; Validación que se ejecute el comando anterior para ejecutar una acción siguiente si es verdadero
then echo » Repaldo realizado Con Exito: » es la acción siguiente, junto con un bonus extra. 😜
./enviaremail2.sh que se envie un email si la acción o el script se ejecuta.
Tambien voy a dejarle el script del email.
# -*- ENCODING: UTF-8 -*- #!/bin/bash SUBJECT='Respaldo de Archivos' RECEIVER=users@mail.com TEXT='Se realizo el respaldo semanal de archivos con exito, Validar en el servidor de Backup para mayor confiabilidad.' SERVER_PORT="192.168.31.3:25" SENDER="backup@mail.com" USER="user" PASSWORD="password" swaks --to $RECEIVER --from $SENDER --server $SERVER_PORT --auth LOGIN --auth-user $USER --auth-password $PASSWORD -tls --data "Date: %DATE%\nTo: %TO_ADDRESS%\nFrom: %FROM_ADDRESS%\nSubject: $SUBJECT %DATE%\nX-Mailer: swaks v$p_versionjetmore.org/john/code/swaks/\n%NEW_HEADERS%\n %DATE%\n$TEXT \n"
Yo utilicé swaks porque fue la opción que más se ajustaba a lo que buscaba en ese momento, ustedes pueden utilizar otro servicio si lo prefieren pero la estructura siempre será la misma.
Ahora bien, si queremos que la tarea se ejecute recurrentemente debemos crear un cron en el contab
crontab -e
@weekly /opt/respaldo.sh
En mi caso quiero que se ejecute semanalmente y el script esta en el directorio /opt/
Estos scripts son aplicables a cualquier servidor o equipo Linux y no solo para respaldo de archivos vía remota, también podemos automatizar tareas de respaldo local de una DB por ejemplo, el cielo es el límite.
Debe estar conectado para enviar un comentario.