Jump to content
From ArchWiki
Esta traducción de Full system backup with tar fue revisada el 2019-11-15. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Artículos relacionados

- Full system backup with SquashFS (Español)

Este artículo le enseñará como hacer una copia de seguridad de todo el sistema con tar.

## Descripción

Crear una copia de seguridad con tar tiene la ventaja de usar compresión que puede ayudar a guardar espacio en disco, y aportar simplicidad. El proceso solo requiere varios pasos, que son:

1. Arrancar desde un LiveCD.
2. Pasar al entorno enjaulado de la instalación Linux.
3. Montar (si hubiesen) otras particiones/discos.
4. Añadir exclusiones.
5. Utilizar el script de respaldo para hacer la copia de seguridad

Para reducir al mínimo la inactividad la copia de seguridad puede alternativamente realizarse en un sistema en ejecución usando instantáneas LVM, si todos los sistemas de archivos están montados en volúmenes LVM.

## Arrancar con LiveCD

Muchos LiveCD, USB... tienen la capacidad de dejarle cambiar al entorno enjaulado de su instalación. Aunque no es requisito montar una jaula para hacer la copia de seguridad, esto proporciona la capacidad para ejecutar el script sin tener que pasarlo a un dispositivo de almacenamiento temporal o tener que ubicarlo en el sistema de archivos. El medio vivo debe compartir con la instalación linux la misma arquitectura (es decir, i686 o x86_64).

## Cambiar a un entorno enjaulado

Lo primero que debería tener es un entorno de para ejecutar scripts («scripting») en su instalación Linux. Si no sabe lo que es, significa que puede ejecutar cualquier script que pueda tener como si fuera un programa normal. Si no pudiese, vea este artículo para saber como hacerlo. Lo siguiente que necesita es pasar al entorno enjaulado, para aprender más sobre este proceso, lea esto. Dentro de una jaula, no necesita ningún sistema de archivos temporal (`/proc`, `/sys` y `/dev`). Estos sistemas de archivos se inicializan durante el arranque y en verdad no debe hacer una copia de ellos, ya que pueden interferir con la correcta (y necesaria) inicialización del sistema, que puede cambiar con cualquier actualización. Para cambiar al entorno enjaulado, tiene que montar la partición raíz de su instalación Linux. Por ejemplo:

    mkdir /mnt/arch
    mount /dev/<su partición o disco>

Use `fdisk -l` para descubrir sus particiones y discos. Una vez lo sepa, ejecute `chroot`:

    cd /mnt/arch
    chroot . /bin/bash

Este ejemplo claramente usa bash pero puede utilizar otros intérpretes de órdenes si están disponibles. Ahora se encontrará en su entorno de scripting (esto es proporcionado si se haya cargado el archivo de configuración `~/.bashrc` al entrar en la jaula):

    cat ~/.bash_profile
    # Si usa bash, carga la configuración del archivo local .bashrc
    source ~/.bashrc

## Montar otras particiones

Otras particiones que use tendrán que ser montadas en su ubicaciones correspondientes (por ejemplo, si tiene una partición `/home` separada).

## Excluir archivos

`tar` tiene la capacidad de ignorar ciertos archivos y carpetas. La sintaxis requiere colocar cada archivo o carpeta a ignorar en una línea distinta. `tar` también tiene la capacidad de entender expresiones regulares (regexps). Por ejemplo:

    # No copias antiguas
    /opt/backup/arch-full*

    # No archivos temporales
    /tmp/*

    # No a la caché de pacman
    /var/cache/pacman/pkg/
    ...

## Script para realizar la copia de seguridad

Respaldar con tar es un proceso directo. Aquí tiene un script básico que puede hacerlo y que hace además unas cuantas comprobaciones. Tendrá que modificar este script definiendo la ubicación donde poner la copia, los archivos a excluir (si tiene alguno), y ejecutarlo una vez haya pasado al entorno `chroot` y montado todas las particiones.

    #!/bin/bash
    # Copia completa del sistema

    # Destino de la copia
    backdest=/opt/backup

    # Etiquetas para la copia
    #PC=${HOSTNAME}
    pc=pavilion
    distro=arch
    type=full
    date=$(date "+%F")
    backupfile="$backdest/$distro-$type-$date.tar.gz"

    # Exclusión de ubicación de archivo
    prog=${0##*/} # Nombre de programa según el nombre del archivo
    excdir="/home/<user>/.bin/root/backup"
    exclude_file="$excdir/$prog-exc.txt"

    # Comprobación de jaula
    echo -n "Recuerde hacer chroot desde un LiveCD. ¿Ejecutar la copia de seguridad? (s/n): "
    read executeback

    # Comprobar si el archivo de exclusión existe
    if [ ! -f $exclude_file ]; then
      echo -n "No existen ningún archivo excluido, ¿continuar? (s/n): "
      read continue
      if [ $continue == "n" ]; then exit; fi
    fi

    if [ $executeback = "s" ]; then
      # -p y --xattrs almacenan todos los permisos y atributos extendidos.
      # Sin ambos, muchos programas dejarán de funcionar.
      # Es seguro eliminar el indicador detallado (-v). Si estás usando un
      # terminal lenta, esto puede acelerar el proceso de copia de seguridad.
      tar --exclude-from=$exclude_file --xattrs -czpvf $backupfile /
    fi

## Restaurar

Para restaurar desde una copia de seguridad anterior, monte todas las particiones relevantes, cambie el directorio de trabajo actual al directorio raíz y ejecute:

    bsdtar --xattrs -xpf $backupfile

reemplazando $backupfile con el archivo de respaldo. La eliminación de todos los archivos que se agregaron desde que se realizó la copia de seguridad debe realizarse manualmente. Recreando los sistemas de archivos es una manera fácil de hacer esto.

## Realizar copia de seguridad con compresión parallel

Para realizar una copia de seguridad con compresión parallel (SMP), utilice pbzip2 (Parallel bzip2).

Primero haga una copia de seguridad de los archivos en un archivo tarball simple sin compresión:

    # tar -cvf /ruta_de_destino/etc-backup.tar /etc

Luego utilice pbzip2 para comprimirlo con parallel:

    $ pbzip2 /ruta/a/directorio/elegid/etc-backup.tar.bz2

Almacene `etc-backup.tar.bz2` en uno o más medios sin conexión, como una memoria USB, disco duro externo o CD-R. Ocasionalmente verifique la integridad del proceso de copia de seguridad comparando los archivos y directorios originales con sus copias de seguridad. Posiblemente mantenga una lista de «hashes» de los archivos respaldados para hacer la comparación más rápida.

Restaure los archivos corruptos de `/etc` extrayendo el archivo `etc-backup.tar.bz2` en un directorio de trabajo temporal y copiando archivos y directorios individuales según sea necesario. Para restaurar todo el directorio `/etc` con todo su contenido, ejecute la siguiente orden como root:

    tar -xvjf etc-backup.tar.bz2 -C /

Category:

- Backup (Español)