13 Compresión y Respaldo en Linux
Published Apr 15, 2023
🧠 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:
-
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.
-
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
- Crea un archivo tar de una carpeta:
tar -cvf respaldo.tar carpeta/
- Comprímelo con gzip:
gzip respaldo.tar
- Extrae el contenido:
tar -xvzf respaldo.tar.gz
- 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
contar
para crear backups automáticos. - Explora herramientas como
borg
orestic
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! 🚀