Cómo crear copias de seguridad con Fsarchiver en Linux

No hay peor sensación que perder toda la información de tu disco duro. No importa lo que hagamos, tarde o temprano llega el desastre. Así que más vale prevenir que lamentar. Fsarchiver es una interesante utilidad para realizar nuestras copias de seguridad y es muy popular entre los administradores de sistemas .

Su instalación es muy sencilla pues se encuentra disponible en los repositorios de las ditribuciones GNU/Linux más populares. Por ejemplo, para instalar Fsarchiver en Ubuntu o distribuciones derivadas es suficiente con ejecutar el siguiente comando:

sudo apt install fsarchiver

Crear una copia de seguridad

Antes de crear una copia de seguridad de un sistema de archivos, debemos asegurarnos de que no esté montado, o al menos que sea montado en modo de solo lectura. Este punto es importante, si se proporciona la opción adecuada, fsarchiver puede trabajar también en sistemas de archivos montados, pero si queremos que nuestra copia de seguridad sea coherente, deberíamos evitar ese escenario.

Fsarchiver admite varios tipos de sistemas de archivos, como ext4, ext3, xfs, btrfs, reiserfs. La aplicación puede ejecutarse en modo multiproceso y está configurada, de manera predeterminada, para preservar los atributos de archivo estándar y extendido como los utilizados por SELinux y ACL (Lista de control de acceso). Los archivos contenidos en el archivo pueden ser verificados por suma de verificación.

Para crear un archivo, debemos usar el subcomando savefs y especificar el nombre del archivo que se creará y el sistema de archivos de origen que queremos respaldar. Para hacer una copia de seguridad de un sistema de archivos ext4, en el dispositivo /dev/sda3 ejecutamos:

sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3

Como puedes ver la sintaxis del programa es muy simple. Si te estás preguntando que es -v, esta es una opción que hará que el programa se ejecute en modo detallado, y podremos ver la operación realizada en cada archivo y su progreso.

Una vez que se inicia el comando, lo primero que hará el programa es analizar el sistema de archivos. Luego procederá con la operación de copia de seguridad real, como podemos ver en la salida:

Analysing filesystem on /dev/sda3...
====================== archiving filesystem /dev/sda3 ======================
-[00][ 0%][DIR ] /
-[00][ 0%][DIR ] /lost+found
-[00][ 0%][DIR ] /egdoc
-[00][ 0%][DIR ] /egdoc/Templates
-[00][ 0%][DIR ] /egdoc/Documents
-[00][ 0%][DIR ] /egdoc/Music
[...]

Almacenar múltiples sistemas de archivos en el mismo archivo

Una característica genial de fsarchiver es su capacidad de almacenar múltiples sistemas de archivos en el mismo archivo. Si sucede algo malo y necesitamos restaurar desde la copia de seguridad, todo lo que tenemos que hacer es hacer referencia al sistema de archivos por su índice dentro del archivo y despreocuparnos ahorrando una considerable cantidad de tiempo. Para hacer una copia de seguridad de múltiples sistemas de archivos a la vez, simplemente los especificamos uno tras otro:

sudo fsarchive savefs -v /path/to/backup.fsa /dev/sda2 /dev/sda3

Usando compresión

Pero claro, si hacemos una copia de seguridad así el tamaño resultante del fichero puede ser más que considerable. Para ahorrar espacio Fsarchiver admite dos opciones para administrar la compresión:

  • -z (–comprimir)
  • -Z (–zstd)

Ambas opciones necesitan un argumento que especifique el nivel de compresión. El rango de niveles disponibles varía según la opción que usemos.

Compresión con la opción -z

La opción –compress (-z) acepta un nivel de compresión de 0 a 9. Cada nivel corresponde a un algoritmo de compresión utilizado con un modo específico:

Nivel Descripción
0 Usa el algoritmo lz4
1 Para usar compresión lzo con nivel -3
2 Para usar compresión gzip con nivel-3
3 Para usar compresión gzip con nivel -6
4 Para usar compresión gzip con nivel -9
5 Para usar compresión bzip2 con nivel -2
6 Para usar compresión bzip2 con nivel -5
7 Para usar compresión lzma con nivel -1
8 Para usar compresión lzma con nivel -6
9 Para usar compresión lzma con nivel -9

Por supuesto cuanto mayor sea el valor que proporcionemos a la opción -z, mejor compresión obtendremos, a costa de un mayor tiempo y uso de memoria.

Compresión con la opción -Z

La otra opción que podemos usar para especificar un nivel de compresión con fsarchiver es –zstd. Esta opción acepta un rango de valores de 0 a 22. El nivel pasado a la opción no determinará qué algoritmo se usa, pero se usará simplemente como el nivel de compresión zstd.

Excluir archivos de la copia de seguridad

En algunos casos, es posible que deseemos excluir ciertos archivos de la copia de seguridad, por diversos motivos.  Para excluir archivos de una copia de seguridad, debemos usar la opción -e (abreviatura de –excluir) y proporcionar un patrón de exclusión. Los archivos y directorios que coincidan con ese patrón se excluirán de la copia de seguridad.

Digamos, por ejemplo, que queremos excluir cualquier archivo con la extensión “.bk” de nuestra copia de seguridad, ejecutaremos:

sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3 --exclude="*.bk"

Ejecutando en modo multihilo

Como ya se mencionó anteriormente, fsarchiver puede crear o restaurar copias de seguridad en modo multiproceso en máquinas con múltiples núcleos de CPU. La opción que controla esta característica es -j (–jobs): toma el número de hilos para usar como argumento. El valor recomendado suele ser igual al número de procesadores lógicos disponibles: 1. La ejecución en modo de subprocesos múltiples tiene la ventaja obvia de utilizar más potencia de procesamiento para la tarea de copia de seguridad o restauración, que se completará en menos tiempo.

Cifrar el archivo de respaldo

Fsarchiver tiene la capacidad de cifrar los datos guardados en el archivo de copia de seguridad. Para hacer uso de esta función, debemos usar la opción -c o su formato largo: –cryptpass e indicar la contraseña de cifrado como argumento.

$ sudo fsarchiver savefs -v /path/to/backup.fsa /dev/sda3 --cryptpass -
Enter password:
Confirm password:
Analysing filesystem on /dev/sda3...
[...]

Inspeccionar un archivo existente

Hasta ahora vimos cómo crear un archivo de respaldo de nuestra información pero queda lo más importante. ¿Cómo sabemos si contiene la información que queremos? Una vez que creado nuestro archivo podemos inspeccionar su contenido utilizando el subcomando dedicado fsarchiver: archinfo. Todo lo que debemos hacer es indicar la ruta del archivo como argumento. Siguiendo nuestro ejemplo anterior, correríamos:

fsarchiver archinfo /path/to/backup.fsa

La salida del comando sería algo como lo siguiente:

====================== archive information ======================
Archive type:           filesystems
Filesystems count:      2
Archive id:             5e7934e4
Archive file format:        FsArCh_002
Archive created with:       0.8.5
Archive creation date:      2020-03-20_19-51-05
Archive label:
Minimum fsarchiver version: 0.6.4.0
Compression level:      8 (zstd level 8)
Encryption algorithm:       none

===================== filesystem information ====================
Filesystem id in archive: 0
Filesystem format: ext4
Filesystem label:
Filesystem uuid: 69d250a7-16d0-47fd-8ca2-6513d32c1e5a
Original device: /dev/sda2
Original filesystem size: 34.20 GB (36722737152 bytes)
Space used in filesystem: 6.15 GB (6608547840 bytes)

===================== filesystem information ====================
Filesystem id in archive: 1
Filesystem format: ext4
Filesystem label:
Filesystem uuid: ec7d21e9-56b8-4fef-abc7-d9da2a4ad45c
Original device: /dev/sda3
Original filesystem size: 14.70 GB (15786254336 bytes)
Space used in filesystem: 3.29 GB (3536240640 bytes)

En la primera sección de la salida encontramos información general sobre el archivo (fecha de creación, el nivel de compresión, etc).  Entre otras cosas, podemos ver también la identificación numérica asignada al sistema de archivos, su UUID, su formato (ext4 en este caso), la ruta del dispositivo original, el tamaño total del sistema de archivos y el espacio utilizado en él.

Restaurar una copia de seguridad

Para restaurar una copia de seguridad creada con fsarchiver, debemos usar el subcomando restfs. Proporcionamos la ruta de la copia de seguridad del archivo como primer argumento, la identificación del archivo del sistema de archivos que queremos restaurar y el dispositivo de destino. Siguiendo el ejemplo anterior para restaurar la copia de seguridad que hicimos para el sistema de archivos en el dispositivo /dev/sda2 que ejecutaríamos:

sudo fsarchiver restfs /path/to/backup.fsa id=0,dest=/dev/sda2

¿Recuerdas que hablamos de hacer una copia de seguridad de diferentes sistemas de archivo al mismo tiempo? Para restaurar estas copias de seguridad en sus respectivos destinos, solo necesitamos repetir el patrón id, dest:

sudo fsarchiver restfs /path/to/backup.fsa id=0,dest=/dev/sda2 id=1,dest=/dev/sda3

Con el comando anterior, restauraríamos la primera copia de seguridad del archivo a la partición /dev/sda2, y la segunda a /dev/sda3.

Una cosa muy importante para notar es que al restaurar, fsarchiver no solo restaura los archivos, sino que también recrea el sistema de archivos original. Esto es muy útil porque, por ejemplo, elimina la necesidad de ajustar el archivo /etc/fstab, que normalmente debería actualizarse con el nuevo UUID de los nuevos sistemas de archivos.

Conclusiones

Existen otras opciones para crear nuestras copias de respaldo pero fsarchiver es una de las más sencillas de utilizar. Cuenta con la ventaja de que se encuentra disponible prácticamente cualquier distribución Linux y su curva de aprendizaje solo requiere que conozcamos el uso del terminal.  ¡Definitivamente vale la pena!

Comparte esta entrada: