h1

Script sencillo para backups

22/11/2008

Generalmente en entornos de producción es necesario hacer copias de seguridad. Para ello se puede utilizar software como Bacula o hacernos nuestro pequeño script si las necesidades no son muchas.

En este caso muestro un ejemplo de script que corre en el cron de un servidor, el cual se conecta a dos máquinas por SSH, comprime ciertos directorios de algunas máquinas y los envía por scp al servidor. Posteriormente borra las copias con 2 días de antigüedad.

Para que las copias de seguridad sean automáticas, sin intervención del usuario, es necesario configurar el acceso SSH sin password.

El script de ejemplo es el siguiente:

#!/bin/bash
#Definir el servidor donde se almacenan las backups.
LOCALHOST="172.26.0.5"
DEST="/home/carlos/disco.sda1/backups"

#Equipo #1 del que hacer copias.
ORIG1="/home/prod/software"
FICH1=prod-$(date +%Y%m%d).tgz
HOST1=172.26.0.4

ORIG2="/home/tibco"
FICH2=tibco-$(date +%Y%m%d).tgz
HOST2=172.26.0.9

#ATENCIÓN: Añadir la clave pública de ssh para que no se pida clave durante el proceso.

#Backup1
#Crear el fichero, enviarlo y borrarlo del host remoto
ssh $HOST1 "tar cvfz /tmp/$FICH1 --exclude="/home/prod/soft/temp" --exclude="/home/prod/soft/logs" /home/prod/soft/"
ssh $HOST1 "scp /tmp/$FICH1 carlos@$LOCALHOST:$DEST"
ssh $HOST1 "rm /tmp/$FICH1"
FICH_ANTERIOR=prod-$(date +%Y%m%d --date '2 days ago').tgz
if [ -f /home/carlos/disco.sda1/backups/$FICH1 ]; then
rm /home/carlos/disco.sda1/backups/$FICH_ANTERIOR
fi

#Backup2
ssh tibco@$HOST2 "tar cvfz /tmp/$FICH2 /home/tibco/"
ssh tibco@$HOST2 "scp /tmp/$FICH2 carlos@$LOCALHOST:$DEST"
ssh tibco@$HOST2 "rm /tmp/$FICH2"
FICH_ANTERIOR=tibco-$(date +%Y%m%d --date '2 days ago').tgz
if [ -f /home/carlos/disco.sda1/backups/$FICH2 ]; then
rm /home/carlos/disco.sda1/backups/$FICH_ANTERIOR
fi

Y es necesario programar en el cron la ejecución de este script:
carlos@shirley:~$ crontab -e
# m h dom mon dow command
00 21 * * * /home/carlos/backups/misBackups.sh

así como darle permiso de ejecución al script:
carlos@shirley:~$ chmod 700 backups/misBackups.sh

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: