Realización de backup simple con empaquetado tar [BashScripting]

No Gravatar

He creado un script en bash para realizar backups simples. Lo comparto por si a alguien le sirviera, con el código comentado para facilitar la comprensión del mismo. He obviado la identación en el código para que quepa en el post del blog. Para volver a identarlo, recomiendo SublimeText2.

 

#!/bin/bash
# Script de backup de carpetas con tar
clear # Limpiamos la pantalla
# Inicializamos el valor de la variable FECHA
fecha=_`date +%d-%m-%y`_`date +%H-%M`
# Solicitamos el directorio a respàldar y comprobamos que existe
function directorio() { # Declaramos la función para controlar la petición de directorio
salir=0 # Inicializamos la variable del bucle a 0
while [ $salir -eq 0 ] # Iniciamos un bucle para solicitar el directorio
do
echo "----------------------------------"
echo "Introduzca la ruta del directorio "
echo "----------------------------------"
read -p "Ruta: " dir
if [ -z $dir ]   # Comprobamos que la variable no está vacía
then
echo "ATENCIÓN!!"
echo "La ruta no es válida. Inténtelo de nuevo."
else
if [ -d $dir ]  # Comprobamos que la variable sea un directorio
then
control=0 # Inicializamos la variable de control del bucle de respuesta a cero
while [ $control -eq 0 ] # Mientras la variable de control (s/n) sea cero, se ejecutará el bucle
do
echo "El directorio elegido es "$dir"."
read -p "¿Es correcto? (s/n)" pregunta
case $pregunta in  # Preguntamos si es correcto y controlamos la respuesta
S|s) control=1 # Salimos del bucle de preguntas si es correcto 
salir=1  # Salimos del bucle general para almacenar el valor de dir en una variable
;;
N|n) echo "Vuelva a  intentarlo."
control=1 # Si no es correcto, reiniciamos el bucle de pregunta
;;
*) echo "La opción introducida no es válida."  # Volvemos a preguntar si el directorio es correcto
;;
esac
done
else	
echo "La ruta del directorio no es válida."  # Si la variable no es un directorio, reiniciamos el bucle de petición de directorio
fi
fi
done
}

#Iniciamos el script
echo "Copia de seguridad de directorio."
echo "---------------------------------"
echo "Elección del directorio a copiar. (ej. /home/usuario/directorio)"
directorio # Invocamos a la función para que nos solicite un directorio a copiar
origen=$dir # almacenamos la salida en una variable
echo "Elección del directorio donde guardar la copia."
echo "El directorio DEBE existir."
directorio # Invocamos de nuevo a la función para que nos solicite un directorio donde guardar la copia
destino=$dir # almacenamos la salida en una variable
tar -zcvf $destino/Backup$fecha.tar.gz $origen # Invocamos a tar para que empaquete y comprima el directorio origen en el destino con la marca de fecha y hora
echo "-----------------------------"
echo "Copia de seguridad realizada."
echo "-----------------------------"
ls -l $destino # Listamos el directorio destino para comprobar que la copia está hecha

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.