viernes, 26 de agosto de 2011

MI PRIMER SCRIPT DE BACKUP EN CENTOS


Hace ya mucho tiempo tuve mi primera anécdota laboral en el pedido de realizar un Script para realizar un Backup en centOS ustedes dirán habiendo herramientas que realizan esta tarea y de forma eficiente algunos se preguntaran cual es la necesidad de generar un script para realizar esta tarea y  que quizás no sea lo suficientemente potente o eficiente, pues bueno la verda que nos divertiremos haciéndolo nosotros mismo y la satisfaccion al hacerlo no tiene comparación a si que ahí vamos a explicar el contexto.


MI PRIMER SCRIPT EN BASH PARA BACKUP EN LINUX

unas de las primeras cosas que necesitamos aprender al trabajar en linux es como automatizar nuestras tareas utilizando nuestra consola de comandos, en lo personal cuando inicie a trabajar ya algo enserio una de las cosas que me pidieron realizar es elaborar un scrip que realice un backup en un segundo disco duro de la data de uno de nuestro servidores internos de pruebas, el backup se debía de realizar semanal y mensual a las 02:00 am. 
Por lo tanto unas de mis primeras soluciones y la que aplique fue realizar un scrip en bash y programarlo en el crontab aunque hay muchas formas mas simples de hacerlo este fue mi primer script de backup espero que les sirva.

touch /root/backups.sh
chmod +x /root/backup.sh
mkdir /mnt/backup
y supongamos que tenemos un segundo disco duro /dev/sdb con la partición sdb1

#!/bin/bash
################################
# Backup Total Semanal y mensual                       
# Por PERUoverflow - neotrons                              
# peruoverflow.blogspot.com                                
#                                                                             
################################


#Declarando Variables para capturar algunos valores importantes
HOST=`hostname`               # capturamos el nombre del equipo
HORA=`date +%H`              # capturamos la hora formato (00...23)
DIANUM=`date +%d`          # capturamos el día según el mes (1...30)
MES=`date +%B`                #capturamos el mes (enero...diciembre)


# Especificamos los directorios a realizar backup
DIRECTORIOS='/root /boot /bin /sbin /etc /lib /opt /srv /usr /var /tmp'


#montando el nuevo disco sdb partición 2
mount /dev/sdb2 /mnt/backup
#Deteniendo servicios importantes ojo solo muestro algunos
/ect/init.d/httpd stop
/etc/init.d/mysql stop
/etc/init.d/iptables stop
#Los Backup se realizan a las 02:00 am
#Backup mensual programado para el día 01 de cada mes
if [[ "$DIANUM" = "01" && "$HORA" = "02" ]];
then
tar -czf /mnt/backup/backup_$HOST-$MES.tar.gz $DIRECTORIOS
fi
#backup semanal programado para los dias 8,15,22y29
for i in 8 15 22 29; do
if [ "$i" = "8" ];
then
i="08"
fi
if [[ "$DIANUM" = "$i" && "$HORA" = "02" ]];
then
tar -czf /mnt/backup/backup_$HOST-DIA$i.tar.gz $DIRECTORIOS
fi
done
# Iniciando los servicios que detuvimos
/ect/init.d/httpd start
/etc/init.d/mysql start
/etc/init.d/iptables start


#Desmontando el disco
umount /dev/sdb2


# FIN DEL SCRIT BACKUP

AUTOMATIZANDO EL SCRIPT EN CRONTAB

crontab -e
y añadimos la sigueinte linea

* 02 * * * root  /root/backup.sh

en mi primera semana de trabajo ese fue mi primera experiencia pero jaja luego estudiando las herramientas como el crontab puede haberlo configurado independiente mente en el cron.weekly y el cron.monthly y a si evitarme mucha cosa en el scrip pero me divertí haciendo espero que les sirva

1 comentario:

  1. Muchas gracias!!! soy nuevo en esto pero esta super entendible... :) no se ve tan complicado, pero existe algo mas simple? me refiero a que es posible hacer una copia de respaldo en otro pc que esta en red?

    Saludos y gracias

    ResponderEliminar