13 Compresión y Respaldo en Linux

Published Apr 15, 2023

Linuxenvironment

🧠 Introducción

La compresión consiste en reducir el tamaño de archivos o carpetas para que ocupen menos espacio y puedan transferirse más rápido. Es una herramienta esencial en administración de sistemas, desarrollo y respaldo de datos.

🧠 Tipos de compresión:

  1. Lossy (con pérdida)

    El archivo pierde calidad o parte de su información. Se usa en medios como imágenes, audio o video.

    Ejemplo: convertir una imagen PNG a JPEG.

  2. Lossless (sin pérdida)

    Conserva todos los datos originales. Ideal para documentos, scripts, configuraciones o bases de datos.

    Ejemplo: comprimir logs, código fuente o respaldos de configuración.

2. ¿Qué es TAR y por qué es tan usado?

tar no comprime archivos, pero los agrupa en un solo archivo .tar. Esto se conoce como un tarball.

Luego, ese tarball se puede comprimir con herramientas como gzip o bzip2.

📦 Comandos básicos con tar:

  • Crear un archivo .tar:
tar -cvf archivo.tar archivo1 archivo2
  • Ver contenido de un tarball:
tar -tvf archivo.tar
  • Extraer el contenido:
tar -xvf archivo.tar

🔎 Tip: Puedes agrupar carpetas enteras para hacer respaldos simples.

3. Comprimir con Gzip, Bzip2 y otros

🌀 Gzip

  • Bueno en velocidad y compresión.
  • Genera archivos .gz.
gzip archivo.tar        # Comprime
gunzip archivo.tar.gz   # Descomprime

🐢 Bzip2

  • Más lento, pero logra archivos más pequeños.
  • Genera archivos .bz2.
bzip2 archivo.tar
bunzip2 archivo.tar.bz2

⚡ Compress

  • Muy rápido, pero menos eficiente.
  • Genera archivos .Z.
compress archivo.tar
uncompress archivo.tar.Z

💡 Comprimir directamente al crear un tarball

  • Con Gzip:
tar -czvf archivo.tar.gz carpeta/
  • Con Bzip2:
tar -cjvf archivo.tar.bz2 carpeta/
  • Para descomprimir:
tar -xzvf archivo.tar.gz      # gzip
tar -xjvf archivo.tar.bz2     # bzip2

4. Copias Bit a Bit con dd (Copiado Forense)

El comando dd copia exactamente cada bit de un archivo, partición o disco.

Es ideal para clonar memorias USB, respaldar discos o recuperar información.

🔧 Sintaxis básica:

dd if=origen of=destino
  • if: archivo de entrada (input file)
  • of: archivo de salida (output file)

🧪 Ejemplo:

dd if=/dev/sdb of=/home/usuario/usb.img

Clona el contenido de una memoria USB a un archivo .img.

⚙️ Opciones útiles:

  • bs (block size):
bs=4096

Tamaño de bloque. Mayor tamaño = más rápido (en general).

  • conv=noerror: Ignora errores de lectura.
conv=noerror
  • status=progress: Muestra avance en tiempo real.
status=progress

✅ Ejemplo completo:

dd if=/dev/sdb of=usb.img bs=4M conv=noerror status=progress

⚠️ Precaución: Asegúrate de no equivocarte con los nombres de los discos (/dev/sdX). ¡Podrías borrar tu disco principal!

✅ Práctica Recomendada

  1. Crea un archivo tar de una carpeta:
tar -cvf respaldo.tar carpeta/
  1. Comprímelo con gzip:
gzip respaldo.tar
  1. Extrae el contenido:
tar -xvzf respaldo.tar.gz
  1. Clona una USB (solo en entornos de prueba):
sudo dd if=/dev/sdb of=usb.img status=progress

📘 Próximos Pasos

  • Prueba la herramienta xz, que ofrece mejor compresión (usa .xz).
  • Aprende a usar rsync para sincronización eficiente de archivos.
  • Combina cron con tar para crear backups automáticos.
  • Explora herramientas como borg o restic para respaldos avanzados.

🎯 Conclusión

Dominar la compresión y el copiado bit a bit te permitirá ahorrar espacio, mejorar el rendimiento de tus transferencias y crear respaldos más seguros.

Con herramientas como tar, gzip, bzip2 y dd, tienes todo lo que necesitas para trabajar como un profesional en entornos Linux.

¡Sigue practicando y mejora tus habilidades cada día! 🚀