9/9/17

Backup de Linux con Tar y Crontab.

En este articulo, mostraré como crear una tarea programada en crontab para respaldar un directorio o archivo, creando un TarBall, es decir un archivo doblemente comprimido.

Creando un TarBall:

Formato del comando:

sudo tar -cvpzf /Destino/Nombre_del_TarBall.tar.gz /Directorio_a_Respaldar

Desglose del comando:
  • c = Crea Archivo (sobreescribe anterior)
  • v = Verbalizar (muestra un output)
  • p = Mantiene los permisos.
  • z = Comprime.
  • f = Asigna nombre al archivo.
Ejemplo: Haremos un respaldo de todo el directorio samba (/samba_share), lo llamaremos bkpsmb y lo guardaremos en la carpeta (/backups).

sudo tar -cvpzf /backups/bkpsmb.tar.gz /samba_share

Tip: Si deseas excluir un directorio puedes usar:
  • --exclude=DIRECTORIO = Excluye un directorio y todo su contenido. 
Ejemplo:

sudo tar -cvpzf /backups/bkpsmb.tar.gz --exclude=/samba_share/musica /samba_share

 

Incluir fecha y hora en el nombre del archivo:

Para lograr esto agregamos lo siguiente antes de .tar.gz:

-$(date +%Y-%m-%d-%H-%M) 

Ejemplo:


sudo tar -cvpzf /backups/bkpsmb-$(date +%Y-%m-%d-%H-%M).tar.gz /samba_share

Descomprimiendo un TarBall:

Formato:

sudo tar --xvpzf /Directorio/Nombre_del_TarBall.tar.gz -C /Directorio_Destino

Desglose del comando:
  • x = Extrae el archivo.
  • v = Verbalizar (muestra un output)
  • p = Mantine los permisos.
  • z = Desomprime.
  • f = Indica el nombre del tarball. 
  • -C / = Indica el directorio en el cual se descomprimirá el archivo.
Ejemplo: Descomprimiré el archivo bkpsmb.tar.gz en el directorio /recuperado.

sudo tar -xvpzf  /backups/bkpsmb.tar.gz -C /recuperado


Creando una tarea programada Opcion 1:

Ejecutamos el comando:

En Ubuntu: sudo crontab -e
En CentOS: vim /etc/crontab

Nota: De ser la primera vez que se ejecuta el comando, te pedirá definir tu editor de texto.


Formato del comando:

m h dom mon dow command

Desglose del comando:
  • m = Minutos; Expresados de 0 a 59
  • h = Hora; Expresado de 0 a 24.
  • dom = Día del mes; Expresado de 1 a 31.
  • mon = Mes; Expresado de 1 a 12.
  • dow = Día de la Semana; Expresado de 0 (Domingo) a 6 (Sábado).
  • command = El comando a programar.
    • NOTA: Se puede usar el símbolo "*" para expresar "todos".
Ejemplo del comando: Para programar un respaldo, todos los días del mes a las 18:30.

30 18 * * * sudo tar -cpzf /backups/bkpsmb.tar.gz /samba_share

Nota: En este caso se puede excluir la orden "v"si no nos interesa que verbalice.

Para salir de nano y guardar los cambios, pulsamos "ctrl + x", luego "s" y finalmente "Enter"


Creando una tarea programada Opción 2:

En esta segunda opción crearemos un script que mantenga copias con la fecha del respaldo.

Para ello, ejecutamos el comando:

sudo nano /nombredelscript.sh Ejemplo: sudo nano /bkp_diario.sh

Y colocamos el siguiente contenido en el script:
#!/bin/bash
#Creado por: JManzur
echo "Iniciando Respaldo"
NOMBRE=Realizado_El_$(date +"%d-%m-%y").tar.gz #Nombre del archivo.
ORIGEN='/samba_share' #Directorio a Respaldar.
DESTINO='/backups' #Directorio destino del respaldo.
tar -cvpzf $DESTINO/$NOMBRE $ORIGEN
echo "Respaldo Finalizado con Exito"
#FIN


Tip: Si deseas incluir la hora, el formato sería: $(date +"%d-%m-%y-%H-%M") 

Hacer el .sh ejecutable:

chmod +x /bkp_diario.sh

Para probar el comando ejecuten:

sudo /bin/bash /bkp_diario.sh

Ahora agregamos el script en el crontab

sudo crontab -e

Y para programar una tarea que ejecute el script diariamente a las 18:30, colocaríamos la linea:

30 18 * * * sudo /bin/bash /bkp_diario.sh

No hay comentarios :

Publicar un comentario