Script crear Backup del Sistema Completo


Lo primero que haremos será crear un archivo de texto simple/plano y abrirlo con cualquier editor de texto ya sea en modo consola como nano o gráfico como kate o gedit por ejemplo.


gedit backup.sh &


Con esto lo abrimos desde un terminal y lo dejamos abierto pudiendo seguri escribiendo en la consola si fuese necesario. De igual forma podemos abrirlo desde el icono.


Ahora escribiremos dentro de este como primera línea lo siguiente:

#!/bin/bash


Con esta línea hemos indicado el intérprete de comandos con el que deseamos ejecutar el script, esto evitará problemas de compatibilidad ya que hay muchos lenguajes de scripts y aunque puedan parecer similares tienen pequeñas diferencias en su sintaxis que podría hacer fallar la ejecución del mismo.

Añadir órdenes a nuestro backup.sh



Tras indicar el intérprete programaremos nuestro comando para que haga una copia de todo el sistema excluyendo las partes del sistema que no son necesaria como archivos corruptos, temporales, puntos de montaje (/media y /mnt)…


El script quedará de la siguiente forma:


tar -cvpjf “/media/usuario/BACKUPS/system_backup_`date +%d%b%y`.tar.bz2” –exclude=/proc –exclude=lost+found –exclude=/system_backup*.tar.bz2 –exclude=/mnt –exclude=/sys –exclude=/media –exclude=/var/log –exclude=/tmp /


Lo que hemos indicado es:

  • Que guarde la copia de seguridad dentro del directorio “media/usuario/BACKUPS”

  • Su nombre comienza por “system_backup_” como parte fija y después la fecha actual, terminando en la extensión “tar.bz2” ya que es el formato en el que guardamos la copia de seguridad garantizando que se mantienen incluso los permisos

  • Excluimos todos los directorios que no contienen información interesante o pueden dar problemas, esto lo hacemos con “–exclude=”

  • Por último indicamos el directorio del cual vamos a realizar o más bien partir para crear nuestro Backup


Por supuesto estos parámetros se han de modificar acorde a vuestro sistema y necesidades. En principio cambiando simplemente la ruta donde se guardará el backup (intentad que sea en un directorio excluido del mismo o almacenamiento externo) debería ser totalmente válido para vuestro uso

Permisos al script de backup



Una vez hayáis terminado debéis aseguraros que el script está guardado y tiene una extensión “.sh”


Ahora le daremos permisos de ejecución y lectura para todos los usuarios, escritura solo para nuestro usuario.

sudo chmod 755 backup.sh


Comprobar el integridad del backup



Es buena idea comprobar nuestro backup para garantizar su integridad. La creación del archivo de copia en tar.bz2 puede tardar un buen rato dependiendo de la cantidad de datos que tengamos en nuestro sistema por lo que se recomienda hacer una pequeña limpieza como por ejemplo bleachbit, debfoster, limpiar kernel que no usemos, e incluso limpiar paquetes del gestor de paquetes que tenemos en cache para tener un backup de menor tamaño y de camino mantener nuestro sistema más limpio.

Ejecutar el script y crear la copia de seguridad



Como ya tenemos las instrucciones en nuestro script, tan solo tenemos que invocarlo cuando deseamos que cree una copia de seguridad, también podemos hacer que este proceso sea transparente y automático si programamos tareas mediante cron o anacron.


Para ejecutar el script que en nuestro caso se llama “backup.sh” lo hacemos de la siguiente forma:


sudo bash backup.sh

Restaurar sistema desde un backup creado anteriormente



Es útil conocer además de como crear la copia de seguridad, saber como se restablece.


La mejor forma es arrancar desde otro sistema, desde un LiveCD o LiveUSB y restaurar nuestro sistema manualmente.

Ver los dispositivos montados



Mostraremos todos los dispositivos del sistema para asegurarnos cual es nuestro disco duro objetivo, tened cuidado que errar en la recuperación si teneis más particiones o discos duros podría hacer que perdáis algún dato.


sudo fdisk -l

Montar partición objetivo



Montar partición donde recuperaremos (imaginemos que es /dev/sda1).
Si tenéis el sistema dividido en varias particiones/discos tendréis que recomponerlo montándolo con mount. Esto solo si habéis separado /boot, /home, /usr/src por ejemplo. En caso de no haberlo hecho sería tan simple como montarlo normalmente:


sudo mount /dev/sda1 /mnt

Limpiar sistema viejo



Borrar todo el contenido del sistema que restauraremos.


Con el siguiente comando lo que haremos es borrar todo lo que haya contenido en esa/esas particiones para dejarla vacía y poder volcar dentro de ella en el próximo paso todos los datos de nuestro backup.


sudo rm -R /mnt/*

Restaurar nuestro Backup



Ahora solo queda volcar todo el contenido de nuestra copia de seguridad dentro del punto de montaje donde estará nuestro sistema.


Modificamos el origen del backup que podríamos tener en un disco duro o pendrive y ejecutamos la siguiente orden con las modificaciones necesarias:


sudo tar -xvpjf “ruta del backup”.tar.bz2 -C /mnt/

Retoques finales



Por último tenemos que volver a crear los directorios omitidos en la copia de seguridad.


En este punto también dependerá totalmente de todo lo que hayamos excluido a la hora de crear el script.


sudo mkdir /mnt/proc /mnt/mnt /mnt/sys /mnt/media /mnt/tmp /mnt/var/log

Scripts ya hechos



A continuación dejo una serie de scripts de un colaborador. En el momento de su creación parecen realizar su trabajo correctamente. Se iran corrigiendo errores que se reporten por lo que usarlos es vuestra responsabilidad. La cuenta en github es https://github.com/fryntiz y el repositorio en concreto https://github.com/fryntiz/ShellScript/tree/master/Sistema




Scripts Linux

Raúl Caro Pastorino

Informático, técnico en sistemas, redes, baja tensión (electricidad) y desarrollador de aplicaciones WEB. Soy un apasionado por GNU/LINUX y el software libre en general desde prácticamente el año 2001-2003 que comencé. Intento usar y trabajar siempre con código libre o abierto de forma profesional. Me apasiona la programación, la micro-electrónica, el diseño gráfico y edición multimedia. Fan de Raspberry y arduino. Programo en bash, python, php y javascript principalmente. Repositorios de código con git: https://gitlab.com/fryntiz https://github.com/fryntiz

Un comentario:

  1. Interesante. Lo aplico a mi sistema. Gracias

Deja un comentario

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