Full system backup with tar (Español)

From ArchWiki
Jump to navigation Jump to search

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

Descripción

Respaldar 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. Use 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, USBs... 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 (por. ej: i686 o x86_64).

Cambiar a un entorno enjaulado

Lo primero que debería tener es un entorno de 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, and /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 si están disponibles. Ahora se encontrará en su entorno de scripting (esto es dado que 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 (p. ej: si tiene una partición /home separada).

Excluir ficheros

tar tiene la capacidad de ignorar ciertos ficheros 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 la cache del pacman
/var/cache/pacman/pkg/
...

Script para 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 ficheros 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 fichero
prog=${0##*/} # Nombre de programa del 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 fichero de exclusión existe
if [ ! -f $exclude_file ]; then
  echo -n "No existen ningún fichero excluido, ¿continuar? (S/n): "
  read continue
  if [ $continue == "n" ]; then exit; fi
fi

if [ $executeback = "y" ]; then
  tar --exclude-from=$exclude_file -czpvf $backupfile /
fi