Guía definitiva para comprimir archivos al máximo en Linux
A lo largo del tiempo he ido aprendiendo distintas formas de comprimir archivos en Linux: desde PDFs imposibles hasta imágenes en las que necesitaba rascar unos pocos KB más. Casi siempre se puede optimizar un poco más. La idea no es solo comprimir, sino hacerlo bien: manteniendo la compatibilidad y encontrando el mejor equilibrio entre tamaño y calidad.
Aunque hay herramientas gráficas, la terminal ofrece utilidades muy potentes que permiten comprimir los archivos al máximo. En esta guía recopilo las que mejor resultado me han dado, con ejemplos prácticos según el tipo de archivo. Así no tendremos que memorizar comandos difíciles; bastará con copiar y pegar.
1. Documentos
1.1. PDF (.pdf)
Probablemente uno de los formatos más habituales y también de los más problemáticos cuando pesan demasiado.
Primero instalamos ghostscript:
sudo apt install ghostscript
1.1.1. Compresión individual
Este comando reduce bastante el tamaño del PDF (puedes copiar el bloque entero, las barras invertidas \ le indican a la terminal que el comando continúa en la línea siguiente):
gs -q -dNOPAUSE -dBATCH -dSAFER -dQUIET -dDetectDuplicateImages \
-dPDFA=2 -dPDFACompatibilityPolicy=1 -dSimulateOverprint=true \
-sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dPDFSETTINGS=/screen \
-dEmbedAllFonts=true -dSubsetFonts=true -dAutoRotatePages=/None \
-dColorImageDownsampleType=/Bicubic -dColorImageResolution=128 \
-dGrayImageDownsampleType=/Bicubic -dGrayImageResolution=128 \
-dMonoImageDownsampleType=/Bicubic -dMonoImageResolution=128 \
-sOutputFile=comprimido.pdf original.pdf
Después puedes intentar arañar algo más con pdftk:
sudo apt install pdftk
pdftk comprimido.pdf output comprimido_final.pdf compress
⚠️ Nota: Este paso puede eliminar la tabla de contenidos o el índice interactivo en algunos documentos. Revisa el resultado final.
1.1.2. Compresión por lotes
Para procesar todos los PDFs de un directorio automáticamente:
find . -name '*.pdf' | while read pdf; do
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen \
-dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages \
-dCompressFonts=true -r150 \
-sOutputFile="${pdf%.pdf}_comprimido.pdf" "$pdf"
done
2. Imágenes
2.1. GIF (.gif)
Los GIF pueden reducirse bastante sin perder demasiada calidad visual.
sudo apt install gifsicle
gifsicle -b -n -O3 imagen.gif
2.2. PNG (.png)
Para los archivos PNG hay varias herramientas combinables. Empezamos con optipng:
sudo apt install optipng
optipng -o7 -zm1-9 -clobber -fix -quiet -strip all imagen.png
Después, aún se puede exprimir un poco más con zopflipng:
sudo apt install zopfli
zopflipng -m -y imagen.png imagen_opt.png
2.3. JPEG (.jpg / .jpeg)
Para fotografías, jpegoptim es rápido y eficaz:
sudo apt install jpegoptim
jpegoptim --strip-all -m75 -v foto.jpg
-m75ajusta la calidad máxima al 75% (puedes modificarlo según necesites).
Otra opción es mozjpeg (más lento de procesar, pero ofrece resultados muy interesantes en algunos escenarios):
sudo apt install libjpeg-turbo-progs
Uso básico:
cjpeg -quality 75 -outfile salida.jpg entrada.jpg
Personalmente, suelo usar
jpegoptimpor su rapidez y buen equilibrio general.
3. Archivos ya comprimidos
Puede parecer sorprendente, pero algunos archivos que ya están comprimidos aún se pueden optimizar un poco más.
3.1. ZIP (.zip)
Muchos formatos ofimáticos modernos (docx, epub, odt…) son en realidad archivos ZIP empaquetados. Podemos recomprimirlos con advzip:
sudo apt install advancecomp
advzip -z -p -4 -k -i 1000 archivo.zip
-4suele ofrecer el mejor equilibrio entre tiempo invertido y nivel de compresión.-i 1000repite el proceso internamente para intentar mejorar el resultado final.
3.2. Gzip (.gz)
La herramienta zopfli genera archivos totalmente compatibles con gzip, pero más pequeños:
sudo apt install zopfli
El proceso requiere descomprimir primero y recomprimir después:
gunzip archivo.gz
rm archivo.gz
zopfli -i100 archivo
-i100aumenta el esfuerzo de compresión (tarda más, pero el resultado es mejor).
4. Archivos web
En este apartado no hablamos tanto de “comprimir” mediante algoritmos, sino de minificar el código.
4.1. XML (.xml, .svg, etc.)
Una herramienta muy útil y versátil es htmlcompressor:
wget -c [https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/htmlcompressor/htmlcompressor-1.5.3.jar](https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/htmlcompressor/htmlcompressor-1.5.3.jar)
sudo apt install openjdk-11-jre-headless
Uso:
java -jar htmlcompressor-1.5.3.jar -t original.xml -o comprimido.xml
Esta acción elimina espacios en blanco, saltos de línea y comentarios innecesarios, reduciendo el peso final del archivo.
4.2. HTML (.html)
Podemos usar la misma herramienta ajustando los parámetros para limpiar a fondo la estructura HTML:
java -jar htmlcompressor-1.5.3.jar -t html -c utf-8 \
--simple-doctype --remove-style-attr --remove-link-attr \
--remove-script-attr --simple-bool-attr \
--remove-js-protocol --remove-surrounding-spaces max \
original.html -o comprimido.html
4.3. JavaScript (.js)
Para los scripts, yui-compressor es un clásico muy fiable:
sudo apt install yui-compressor
Uso:
yui-compressor --compilation_level ADVANCED_OPTIMIZATIONS \
--js original.js \
--js_output_file comprimido.js
5. Conclusión
Casi siempre hay margen para optimizar un poco más. Con las herramientas adecuadas desde la terminal, se puede reducir el tamaño de casi cualquier tipo de archivo de forma rápida, automatizable y, muchas veces, sin apenas perder calidad perceptible.
Si conoces alguna otra técnica o herramienta que mejore estos resultados, cuéntamelo para que la añada.