Técnicas de Copia de Seguridad y Cifrado Básico en Linux

En sistemas Linux, a pesar de su robustez y diseño para funcionar continuamente, los datos pueden perderce debido a errores del usuario o fallos del sistema, como problemas en el disco duro. Por ello, realizar copias de seguridad de datos críticos es esencial.

Preparación de Datos con tar

Normalmente, los datos se recopilan en un archivo archivado antes de comprimirlos. En Linux, el comando tar se utiliza para crear estos archivos, conocidos como tarballs. Las opciones principales incluyen:

  • -v: mostrar información durante el processo.
  • -t: listar los archivos en el tarball.
  • -x: extraer el archivo.
  • -c: crear un archivo.
  • -f dispositivo: especificar el dispositivo o archivo.
  • -j: filtrar con bzip2.

Al usar tar, no se suele añadir el prefijo -. A continuación, un ejemplo modificado para archivar y extraer datos:

carlos@servidor:~$ ls fotos/
paisaje.jpg  retrato.jpg

carlos@servidor:~$ tar cvf fotos-archivado.tar fotos/
fotos/
fotos/retrato.jpg
fotos/paisaje.jpg

carlos@servidor:~$ cd fotos

carlos@servidor:~/fotos$ tar cvf imagenes-sin-directorio.tar *.jpg
paisaje.jpg
retrato.jpg

carlos@servidor:~/fotos$ cd ..
carlos@servidor:~$ ls */*.tar
fotos/imagenes-sin-directorio.tar

carlos@servidor:~$ ls *.tar
fotos-archivado.tar

carlos@servidor:~$ tar xvf fotos-archivado.tar
fotos/
fotos/retrato.jpg
fotos/paisaje.jpg

carlos@servidor:~$ tar tvf fotos/imagenes-sin-directorio.tar
-rw-r--r-- carlos/carlos  50000 2023-05-10 09:30:00 paisaje.jpg
-rw-r--r-- carlos/carlos  12000 2023-05-11 14:45:00 retrato.jpg

carlos@servidor:~$ tar xvf fotos/imagenes-sin-directorio.tar
paisaje.jpg
retrato.jpg

carlos@servidor:~$ ls *.jpg
paisaje.jpg  retrato.jpg

Este ejemplo archiva un directorio y archivos individuales. Se recomienda archivar directorios completos para evitar desorden al extraer.

Compresión con gzip y bzip2

Los datos, incluidos los tarballs, pueden comprimirse con herramientas como gzip, que añade el sufijo .gz y elimina el archivo original.

maria@equipo:~/documentos$ ls -la | grep tar
-rw-rw-r--  1 maria maria 380000 2023-06-15 10:00:00 mi_archivo.tar

maria@equipo:~/documentos$ gzip mi_archivo.tar

maria@equipo:~/documentos$ ls
mi_archivo.tar.gz

maria@equipo:~/documentos$ ls -la mi_archivo.tar.gz
-rw-rw-r-- 1 maria maria 55000 2023-06-15 10:00:00 mi_archivo.tar.gz

Para descomprimir, se usa la opción -d:

maria@equipo:~/documentos$ gzip -d mi_archivo.tar.gz

maria@equipo:~/documentos$ ls -la | grep tar
-rw-rw-r--  1 maria maria 380000 2023-06-15 10:00:00 mi_archivo.tar

bzip2 funciona de manera similar, pero con algoritmos de compresión mejorados para archivos más pequeños. Los paquetes de software en Linux suelen ser tabralls comprimidos con gzip. Para extraerlos:

tar zxvf archivo.tar.gz

Para tarballs comprimidos con bzip2:

tar jxvf archivo.tar.bz2

Sincronización de Archivos con rsync

rsync es una herramienta rápida y flexible para copias de seguridad remotas, disponible en sistemas UNIX. El término "remoto" puede referirse a dispositivos como USB o particiones locales, no necesariamente a equipos separados.

Ejemplo: Sincronización a Dispositivo USB

Primero, monta el dispositivo USB:

root@servidor# mkdir /mnt/almacen_usb

root@servidor# mount -t vfat /dev/sdb1 /mnt/almacen_usb

Inicia la copia de seguridad del directorio /home/ana:

ana@servidor:~$ rsync -avz /home/ana/ /mnt/almacen_usb

Encriptación de Datos

Introducción al Cifrado

En ocasiones, es necesario cifrar datos para su almacenamiento en ubicaciones no controladas, como servidores remotos, o para proteger comunicaciones. En Linux, se utiliza GnuPG (GNU Privacy Guard) para este propósito.

Generación de Claves con GPG

Antes de cifrar, genera un par de claves: pública y privada. La clave pública se comparte para que otros cifren datos destinados a ti, y solo tú puedes descifrarlos con tu clave privada. Protege la clave privada con una contraseña.

ana@equipo:~$ gpg --generate-key
gpg (GnuPG) 2.3.7; Copyright (C) 2023 Free Software Foundation, Inc.
Este es software libre: puede redistribuirlo bajo ciertas condiciones.
No hay GARANTÍA en la medida permitida por la ley.

gpg: directorio '/home/ana/.gnupg' creado
gpg: llavero '/home/ana/.gnupg/pubring.kbx' creado
Nota: Use "gpg --full-generate-key" para un diálogo completo.

GnuPG necesita construir un identificador para reconocer su clave.

Nombre real: Ana
Correo electrónico: ana@ejemplo.com
Usted ha seleccionado este identificador:
    "Ana <ana@ejemplo.com>"

Sigue las indicaciones y establece una contraseña segura. Las claves generadas se almacenan de forma segura.

Información de Claves

Tras la generación, se obtiene una firma de 40 caracteres hexadecimales, única globalmente. Para ver detalles de las claves:

ana@equipo:~$ gpg --list-keys
gpg: verificando base de datos de confianza
gpg: se necesitan marginales: 3  completos: 1  modelo de confianza: pgp
gpg: profundidad: 0  validez:  1  firmado:  0  confianza: 0-, 0q, 0n, 0m, 0f, 1u
gpg: próxima verificación de confianza: 2024-06-01
/home/ana/.gnupg/pubring.kbx
------------------------------
pub   rsa4096 2023-06-01 [SC] [expira: 2025-06-01]
      # Identificador único omitido por privacidad
uid           [   absoluta   ] Ana <ana@ejemplo.com>
sub   rsa4096 2023-06-01 [E] [expira: 2025-06-01]

El ID de clave es rsa4096. Puedes compartir tu clave pública en servidores de claves o directamente con contactos. Para exportar la clave pública:

gpg --export -a

Cifrado de Archivos

Para cifrar un archivo, como un tarball comprimido, usa gpg con las opciones -e (cifrar) y -r (destinatario):

gpg -e -r usuario archivo_a_cifrar

Solo el usuario especificado puede descifrar el archivo. Ejemplo:

ana@equipo:~$ gpg -e -r ana documento_sensible.txt

Descifrado de Archivos

Para descifrar, usa la opción -d:

ana@equipo:~/seguro$ ls
documento_sensible.txt.gpg

ana@equipo:~/seguro$ gpg -d -o documento_descifrado.txt documento_sensible.txt.gpg
gpg: cifrado con clave RSA de 4096 bits, ID omitido, creado 2023-06-01
      "Ana <ana@ejemplo.com>"

ana@equipo:~/seguro$ ls
documento_descifrado.txt  documento_sensible.txt.gpg

Etiquetas: linux copias-de-seguridad tar gzip bzip2

Publicado el 6-17 03:35