Recuperar Sistema Linux desde un Backup

<P>
    Recuperar tu sistema operativo tal y como lo tenías desde un <a href="https://laguialinux.es/script-crear-backup-del-sistema/" title="Script para crear backup del sistema">Backup</a> ante una situación de "Catástrofe" donde se rompiera tu sistema.
    <BR/>
    Los pasos de forma simplificada (<a href="https://laguialinux.es/script-crear-backup-del-sistema/" title="Script para crear backup del sistema">Una vez tenemos la copia de seguridad</a>, por supuesto, si hemos sido precavidos) son los siguientes:
    <UL>
        <LI>Formatear la partición del sistema</LI>
        <LI>Montar la partición</LI>
        <LI>Extraer el <a href="https://laguialinux.es/script-crear-backup-del-sistema/" title="Script para crear backup del sistema">backup</a> a esa partición</LI>
        <LI>Crear directorios omitidos en el Backup</LI>
        <LI>Entrar en entorno enjaulado "chroot"</LI>
        <LI>Instalar GRUB</LI>
    </UL>
Puede parecer algo tedioso pero es una manera muy buena de recuperar tu sistema al punto que hicieras una copia de seguridad y tener todos los programas configurados y personalizados igual que antes. Una vez realices este proceso una o dos veces comprobarás que no es tan complicado y tiene mucha efectividad.
</P>

<H2 class="subtitulo">Recuperar Sistema Linux desde un Backup</H2>

<IMG src="/images/1_Portadas/Seguridad/Recuperar-sistema-linux-desde-un-backup.jpg" alt="Recuperar Sistema Linux desde un Backup"/>

<H3 class="subtitulo">Formatear la partición</H3>
<P>
    Para restablecer el sistema desde el backup lo primero será limpiar la partición donde vayamos hacerlo.
    <BR/>
    Así que una vez con nuestra copia de seguridad en un medio externo (fuera de la partición donde vayamos a formatear) podemos formatear desde un terminal, para ello recomiendo entrar desde un live CD de cualquier distribución, aunque recomiendo que sea una similar (por ejemplo si es un sistema debian podemos usar el mismo Debian Live o un linux Mint Live, también Xubuntu. Como verás son distribuciones ligeras para evitar tiempos de espera y posibles lagueos).
    <BR/>
    Tenemos que particionar o formatear nuestro disco duro o nuestra partición para recuperar los datos a un destino totalmente limpio y que no contenga archivos. Para este fin suelo usar la herramienta gráfica "Gparted" esta herramienta es posible que no venga por defecto pero podemos instalarla (necesitamos conexión a internet) para debian, linux mint y ubuntu mediante el comando:
    <P class="terminal">sudo apt install gparted</P>
    Formateamos nuestra partición en "ext4"
</P>

<H3 class="subtitulo">Montar la partición</H3>
<P>
    Una vez tenemos la partición limpia debemos montarla en un directorio para acceder a ella y restablecer los datos.
    <BR/>
    Ahora montaremos nuestra partición, yo me basaré como si la montara en el directorio "/mnt" directamente.
    <BR/>
    Si quieres crear un directorio específico (no es necesario) puedes hacerlo así:
    <P class="terminal">sudo mkdir /mnt/nombredeldirectorio</P>
    Ahora anotaremos nuestra partición, si no estamos seguros siempre podemos volver a gparted o consultarla mediante el comando:
    <P class="terminal">sudo fdisk -l</P>
    Suponiendo que nuestro objetivo es la partición <STRONG>/dev/sda1</STRONG> quedaría el montaje como en el siguiente ejemplo:
    <P class="terminal">sudo mount /dev/sda1 /mnt</P>
    Con esta última accion hacemos que todo lo que escribamos dentro de la ruta /mnt se estará realizando realmente en la partición obejtivo para restaurar el sistema /dev/sda1
</P>

<H3 class="subtitulo">Extraer el Backup</H3>
<P>
    Ahora que ya tenemos montada la partición en "/mnt" y tenemos acceso a ella, vamos a descomprimir dentro de esta nuestro Backup teniendo en cuenta que yo lo tengo en un pendrive con el nombre "USB32GB" y esto varía según donde hayas guardado el archivo de tu copia, en este caso será de la siguiente forma con ruta absoluta (desde la raíz /):
    <P class="terminal">sudo tar -xvpjf /media/USB32GB/System_backup_06oct14/System_backup_06oct14.tar.bz2 -C /mnt</P>
    Explicaré que USB32GB es el nombre de mi pendrive, System_backup_06oct14 es el nombre del directorio donde tengo el backup dentro del pendrive y System_backup_06oct14.tar.bz2 es el nombre del empaquetador que contiene la copia de seguridad comprimida. Lo que hace este comando es descomprimir respetando la estructura de directorios y subdirectorios dejándolo tal y como estaba en el sistema original.
    <BR/>
    De esta forma dejará todo el sistema preparado tal y como lo teníamos en el momento que hicimos el backup pero esta vez dentro de la partición que hemos creado al principio del tutorial y que hemos montado en /mnt por lo tanto todo lo que metamos dentro de /mnt se escribirá realmente en la partición que creamos al principio.
    <BR/>
    Este proceso tardará un buen rato dependiendo de tu equipo y la cantidad de datos que contenga el backup así que tocará esperar.
</P>

<H3 class="subtitulo">Crear directorios omitidos en el Backup</H3>
<P>
    Normalmente al crear un Backup algunos directorios, ahora tenemos que crearlos dentro de /mnt y dejarlos vacíos por ahora.
    <BR/>
    En mi caso estos son los que suelo omitir:
    <P class="terminal">sudo mkdir /mnt/proc /mnt/mnt /mnt/media /mnt/tmp /mnt/var/log</P>
    En tu caso tendrás que adaptar los directorios que omitieras en el backup original.
</P>

<H3 class="subtitulo">Entrar en entorno enjaulado "chroot"</H3>
<P>
    Chroot nos permite hacer un entorno enjaulado, es decir, decirle al terminal que todo lo que escribamos y ejecutemos lo haga de modo que tome la raíz del sistema a partir del directorio que le digamos. Este es el primer paso para instalar grub en nuestro sistema restaurado y así poder arrancar con el.
    <BR/>
    Antes de entrar como chroot tenemos que montar algunas partes del LiveCD dentro del directorio /mnt para tener acceso a los comandos y dispositivos. Esto se hace de la siguiente manera:
    <P class="terminal">sudo mount -t proc proc /mnt/proc/</P>
    <P class="terminal">sudo mount -t sysfs sys /mnt/sys/</P>
    <P class="terminal">sudo mount -o bind /dev /mnt/dev/</P>
    <P class="terminal">sudo mount -t devpts pts /mnt/dev/pts</P>
    Ya hemos montado todas las partes del sistema live que dan información necesaria al futuro enjaulamiento para acceder a dispositivos físicos entre otras cosas.
    <BR/>
    En este punto es donde obtenemos ventajas si usamos un sistema igual al que restauramos, aunque tampoco supondrá un gran problema pero podría evitarnos algún error o tener que hacer más puntos de montajes.
    <BR/>
    Ahora el próximo paso será enjaularnos. Al ejecutar el próximo comando todo lo que ejecutemos será como si lo estuviésemos realizando dentro de /mnt en el sistema recién recuperado. Sería como decir que / en realidad ahora es /mnt donde está la misma estructura de sistema pero en la partición del disco duro que recuperamos.
    <BR/>
    El comando para entrar en <STRONG>chroot</STRONG> es:
    <P class="terminal">sudo chroot /mnt /bin/bash</P>
    Para más comodidad, si queremos que en el promt (nuestro nombre en la terminal, esto es totalmente opcional) aparezca diferenciado de las demás pestañas o terminales podemos cambiarlo con este comando:
    <P class="terminal">sudo export PS1="(chroot) $PS1"</P>
</P>

<H3 class="subtitulo">Instalar GRUB</H3>
<P>
    Nuestro sistema está instalado, ahora tenemos que crear un arranque pues si reiniciamos en este punto quedará sin entrar al sistema.
    <BR/>
    También es otra opción si tenemos varios sistemas linux es entrar en el otro sistema y actualizar grub, de todas formas a continuación explico como recuperar grub manualmente con dos sencillos comandos.
    <BR/>
    Actualizamos GRUB para que detecte los sistemas instalados y genere la configuración correspondiente:
    <P class="terminal">sudo update-grub</P>
    Una vez generada la configuración necesaria pasaremos a instalarlo en el <STRONG>MBR</STRONG> para que sea cargado al elegir ese disco duro como arranque. Siguiendo con el ejemplo será el primer disco duro y lo haríamos con el siguiente comando:
    <P class="terminal">sudo grub-install /dev/sda</P>
</P>

<H3 class="subtitulo">Información Adicional</H3>
<P>
    Reiniciaremos para comprobar que inicia correctamente nuestro sistema.
    <BR/>
    Es posible que se presente problemas de permisos, por ejemplo en la carpeta /tmp si no puede escribir no iniciará el entorno gráfico, si es tu caso se soluciona así:
    <P class="destacado">
        Pulsar CTR+ALT+F1
        <BR/>
        Loguer con tu anterior nombre y contraseña
        <BR/>
        Ejecutar el siguiente comando:
        <P class="terminal">sudo chmod 777 /tmp</P>
    </P>
    Como es de lógica el usuario y contraseña será el mismo que teníais anteriormente
    <BR/>
    Para ver como crear un Backup o un script para generar una copia automáticamente visitar este enlace: <a href="https://laguialinux.es/script-crear-backup-del-sistema/" title="Crear backup">https://www.laguialinux.es/script-crear-backup-del-sistema</a>
    <BR/>
    Un poco más abajo os dejaré unos vídeos con ejemplos.
</P>

<IFRAME class="IframeYoutube" width="560" height="315" src="https://www.youtube.com/embed/7WCZw5a66MY" allowfullscreen></IFRAME>
<IFRAME class="IframeYoutube" width="560" height="315" src="https://www.youtube.com/embed/GOHqcuXZjSM" allowfullscreen></IFRAME>
<IFRAME class="IframeYoutube" width="560" height="315" src="https://www.youtube.com/embed/EDmM624c-hY" allowfullscreen></IFRAME>

<IMG src="/images/1_Portadas/Seguridad/1-Seguridad.png" alt="Comandos 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

Deja un comentario

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