Introducción
En entornos Linux, gestionar archivos de gran tamaño puede presentar desafíos: limitaciones de sistemas de archivos, transferencias por red inestables o la necesidad de respaldos segmentados. Afortunadamente, comprimir y dividir archivos son operaciones sencillas que, combinadas, ofrecen una solución robusta y flexible.
¿Por qué comprimir y dividir archivos grandes
- Reducción de espacio: Muchos ficheros (logs, bases de datos, backups) pueden reducirse considerablemente.
- Compatibilidad: Sistemas de archivos con límite de tamaño (FAT32) aceptan fragmentos menores a 4 GB.
- Transferencias seguras: En conexiones inestables, retransmitir un fragmento es más eficiente que todo el archivo.
- Automatización: Scripts de backup aprovechan particiones serializadas.
Herramientas necesarias
Antes de empezar, asegúrate de tener instaladas las siguientes utilidades:
Comando | Paquete | Función |
---|---|---|
tar | tar | Agrupa y comprime |
gzip / bzip2 / xz | gzip / bzip2 / xz-utils | Algoritmos de compresión |
split | coreutils | Dividir archivos |
md5sum / sha256sum | coreutils | Integridad de archivos |
Paso 1: Comprimir con tar y gzip/bzip2/xz
El enfoque más habitual es empaquetar el contenido y aplicar compresión:
tar -cvf archivo.tar /ruta/al/directorio
tar -czvf archivo.tar.gz /ruta/al/directorio ← gzip
tar -cjvf archivo.tar.bz2 /ruta/al/directorio ← bzip2
tar -cJvf archivo.tar.xz /ruta/al/directorio ← xz
- -c: crear archivo.
- -v: modo verboso (opcional).
- -f: especificar nombre de fichero.
- -z, -j, -J: elegir algoritmo de compresión.
Paso 2: Dividir con split
Una vez comprimido, divide el archivo en fragmentos de tamaño manejable. Por ejemplo, en trozos de 500 MB:
split -b 500M archivo.tar.gz parte_
Esto generará parte_aa, parte_ab, parte_ac, etc.
- -b: tamaño de cada fragmento (k, M, G).
- El prefijo parte_ puede personalizarse.
Uso alternativo con zip
El comando zip
permite compresión y división en una sola instrucción:
zip -r --split-size 500m archivo.zip /ruta/al/directorio
Se crearán archivo.z01, archivo.z02, … y archivo.zip.
Verificación de integridad
Para asegurarte de que cada fragmento y el archivo original permanecen íntegros:
md5sum archivo.tar.gz > archivo.md5
md5sum parte_ gt partes.md5
En destino, repite md5sum -c
para comprobar:
md5sum -c archivo.md5
md5sum -c partes.md5
Ejemplo práctico paso a paso
- Empaquetar y comprimir un directorio:
tar -czf datos.tar.gz ./datos_importantes
. - Dividir en partes de 1 GB:
split -b 1G datos.tar.gz datos_
. - Generar sumas de comprobación:
md5sum datos.tar.gz gt datos.md5
ymd5sum datos_ gt partes.md5
. - Transferir las partes (ver siguiente sección).
- En destino, verificar integridad y recomponer:
split -f datos_ --merge datos.tar.gz
ocat datos_ gt datos.tar.gz
. - Extraer:
tar -xzf datos.tar.gz
.
Transferencia segura: SSH y VPN
Para proteger la transferencia en redes públicas o corporativas, puedes usar scp
o rsync
sobre SSH. Además, recomiendo combinarlo con un servicio de VPN:
Ejemplo de envío con rsync
:
rsync -avP datos_ usuario@servidor:/ruta/de/destino/
Recomponer y descomprimir
- Reconstruir el archivo:
cat parte_ gt archivo.tar.gz
osplit -f parte_ --merge archivo.tar.gz
. - Verificar con
md5sum -c archivo.md5
. - Extraer contenido:
tar -xzvf archivo.tar.gz
.
Consejos y buenas prácticas
- Alineación de tamaño: elige fragmentos menores al límite de tu sistema de archivos o cliente FTP.
- Compresión óptima:
xzip
ofrece mayor ratio a costa de más CPU. - Automatización: integra estos pasos en
cron
o scripts de backup. - Registro de logs: guarda salidas de comandos para auditoría.
Leave a Reply