En concreto realiza la copia en dos directorios, uno se encuentra en la carpeta /home/Backup y el otro es un dispositivo que se haya montado en /media/Backup. Para utilizarlo en nuestra máquina hay que cambiar las direcciones de DIRECTORIO_RESPALDO_1 y DIRECTORIO_RESPALDO_2, o eliminar una si no la necesitas (también hay que eliminar el respectivo fragmento que realiza el respaldo para ese directorio). También es recomendable editar las lineas:
find $DIRECTORIO_RESPALDO_1/`basename $1`* -mtime +186 -exec rm -r -f {} \;
find $DIRECTORIO_RESPALDO_2/`basename $1`* -mtime +62 -exec rm -r -f {} \;
Cambiando los números de la opción -mtime que indica los días mínimos que han de tener los respaldos antiguos a eliminar (ejemplo: -mtime +186 son los archivos con más de 6 meses de antigüedad). Si no se quieren eliminar los respaldos antiguos simplemente comenta o eliminar las lineas antes mencionadas. Para acabar, si el DIRECTORIO_RESPALDO_2 no es un dispositivo que se tenga que montar, es recomendable eliminar o comentar las lineas:
mount $DIRECTORIO_RESPALDO_2 >/dev/null
umount $DIRECTORIO_RESPALDO_2 >/dev/null
Para ejecutarlo:
# ./Script /directorio_a_respaldar
#!/bin/bash
# Script para automatizar respaldos (Backups)
### INICIALIZACIÓN DE VARIABLES ####
DIRECTORIO_RESPALDO_1=/home/Backup # Directorio 1 donde se va a realizar el respaldo
DIRECTORIO_RESPALDO_2=/media/Backup # Directorio 2 donde se va a realizar el respaldo
FECHA_ACTUAL=`date +%d-%m-%Y` # Fecha actual con formato dd-mm-YYYY (ejem: 15-08-2008)
NOMBRE_ARCHIVO=`basename $1`[$FECHA_ACTUAL] # Nombre del archivo resultante del respaldo (ejem: Documentos[15-08-2008].tar.gz)
### CUERPO DEL SCRIPT ###
clear
# Comprobar si tiene permisos de root
if
[ $UID -ne 0 ]; then
echo
"Para poder realizar el respaldo necesita tener permisos de super usuario."
exit
# Comprobar si se ha pasado como parámetro el directorio/archivo a respaldar
elif [ $# -ne 1 ]; then
echo
echo
"Modo de uso: ./`basename $0` {directorio}"
echo
echo
"Sustituya {directorio} por el directorio a ser el backup"
echo
exit
# Comprovar si se tiene permiso de escritura en el directorio de respaldo 1
elif [ -w $DIRECTORIO_RESPALDO_1 ]; then
clear
echo
"Se van a realizar copias de seguridad de $1 y todos sus contenidos en $DIRECTORIO_RESPALDO_1"
sleep 3
clear
echo
"Iniciando el respaldo. La operación puede tardar, no desespere..."
# Eliminar archivos con mas de 186 días (seis meses) del directorio de respaldo 1
find
$DIRECTORIO_RESPALDO_1/`basename $1`* -mtime +186 -exec rm -r -f {} \;
2>> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO-erros.
log
# Inicio del log
echo
"LOG DEL BACKUP DEL DIA `date +%d/%m/%Y`"
>> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.
log
echo
"Hora de inicio de backup: `date +%H:%M:%S`"
>> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.
log
# Inicio del respaldo
tar -czvf $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.tar.gz $1 >> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.
log
2>> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO-erros.
log
# Fin del respaldo
# Crear md5
md5sum $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.tar.gz >> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO-md5.txt
# Finalización del log
echo
"Hora de termino del backup: `date +%H:%M:%S`"
>> $DIRECTORIO_RESPALDO_1/$NOMBRE_ARCHIVO.
log
echo
"El respaldo de $1 y todos sus contenidos en $DIRECTORIO_RESPALDO_1 ha finalizado con exito."
else
echo
echo
"No tiene permiso de escritura en $DIRECTORIO_RESPALDO_1"
fi
# Montando medio de Backup
mount $DIRECTORIO_RESPALDO_2 >/dev/null
# Comprobar si se tiene permiso de escritura en el directorio de respaldo 2
if
[ -w $DIRECTORIO_RESPALDO_2 ]; then
clear
echo
"Se van a realizar copias de seguridad de $1 y todos sus contenidos en $DIRECTORIO_RESPALDO_2"
sleep 3
clear
echo
"Iniciando el respaldo. La operación puede tardar, no desespere..."
# Eliminar archivos con mas de 62 dias (dos meses) del directorio de respaldo 2
find
$DIRECTORIO_RESPALDO_2/`basename $1`* -mtime +62 -exec rm -r -f {} \;
2>> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO-erros.
log
#Inicio del log
echo
"LOG DEL BACKUP DEL DIA `date +%d/%m/%Y`"
>> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.
log
echo
"Hora de inicio de backup: `date +%H:%M:%S`"
>> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.
log
# Inicio del respaldo
tar -czvf $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.tar.gz $1 >> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.
log
2>> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO-erros.
log
# Fin del respaldo
# Crear md5
md5sum $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.tar.gz >> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO-md5.txt
# Finalización del log
echo
"Hora de termino del backup: `date +%H:%M:%S`"
>> $DIRECTORIO_RESPALDO_2/$NOMBRE_ARCHIVO.
log
echo
"El respaldo de $1 y todos sus contenidos en $DIRECTORIO_RESPALDO_2 ha finalizado con éxito."
else
echo
echo
"No tiene permiso de escritura en $DIRECTORIO_RESPALDO_2 o no se ha podido montar correctamente el dispositivo."
fi
# Desmontando medio de Backup
umount $DIRECTORIO_RESPALDO_2 >/dev/null
exit
### FIN DEL SCRIPT ###
MUY IMPORTANTE si no entiendes claramente como funciona este script no te arriesgues a utilizarlo, en su lugar utiliza este otro más sencillo y seguro.
Para ejecutarlo:
# ./Script /directorio_a_respaldar /directorio_donde_guardar_el_respaldo
#!/bin/bash
# Script para automatizar respaldos (Backups)
### INICIALIZACION DE VARIABLES ####
FECHA_ACTUAL=`date +%d-%m-%Y` # Fecha actual con formato dd-mm-YYYY (ejem: 15-08-2008)
NOMBRE_ARCHIVO=`basename $1`[$FECHA_ACTUAL] # Nombre del archivo resultante del respaldo (ejem: Documentos[15-08-2008].tar.gz)
### CUERPO DEL SCRIPT ###
clear
# Comprovar si tiene permisos de root
if
[ $UID -ne 0 ]; then
echo
"Para poder realizar el respaldo necesita tener permisos de superusuario."
exit
# Comprovar si se ha pasado como parametro el directorio/archivo a respaldar
elif [ $# -ne 1 ]; then
echo
echo
"Modo de uso: ./`basename $0` {diretorio_a_respaldar} {directorio_donde_respaldar}"
echo
exit
# Comprovando permisos de escritura
elif [ -w $2 ]; then
# Inicio del log
echo
"LOG DEL BACKUP DEL DIA `date +%d/%m/%Y`"
>> $2/$NOMBRE_ARCHIVO.
log
echo
"Hora de inicio de backup: `date +%H:%M:%S`"
>> $2/$NOMBRE_ARCHIVO.
log
# Inicio del respaldo
tar -czvf $2/$NOMBRE_ARCHIVO.tar.gz $1 >> $2/$NOMBRE_ARCHIVO.
log
2>> $2/$NOMBRE_ARCHIVO-erros.
log
# Fin del respaldo
# Crear md5
md5sum $2/$NOMBRE_ARCHIVO.tar.gz >> $2/$NOMBRE_ARCHIVO-md5.txt
# Finalizacion del log
echo
"Hora de termino del backup: `date +%H:%M:%S`"
>> $2/$NOMBRE_ARCHIVO.
log
echo
"El respaldo de $1 y todos sus contenidos en $2 ha finalizado con exito."
else
echo
echo
"No tiene permiso de escritura en $2"
fi
### FIN DEL SCRIPT ###
No hay comentarios:
Publicar un comentario