Cómo simplificar la compresión 7z con alias de Bash

Hay muchas formas y muchas herramientas que puedes usar para reducir el tamaño de tus archivos, ya sea para disminuir el espacio que ocupan o enviarlos como un paquete a un contacto. De estas, 7-Zip ha ascendido a la posición más alta para la mayoría de los usuarios, gracias a su combinación única de gran rendimiento y niveles de compresión sin costo alguno.
Todas las formas de compresión en este formato resultan más complicadas que el enfoque que veremos aquí. Al menos para la mayoría de los usuarios que utilizan la compresión para empaquetar todo en una carpeta y sus subcarpetas en “paquetes” comprimidos.
Así que veamos cómo podemos combinar el soporte de Bash para alias con la versión de línea de comandos de 7z para crear paquetes de nuestros archivos con un simple comando.
Instalar p7zip
Como la herramienta de compresión más popular, es muy probable que 7-Zip ya esté instalada en tu distribución de Linux. Para probarlo, intenta el comando “7z” en una terminal. Si no está instalada, puedes instalarla en distribuciones basadas en Ubuntu/Debian con el comando:
sudo apt-get install p7zip-full
Crear archivo de alias de Bash
Los alias de Bash permiten mapear comandos o incluso secuencias de múltiples comandos en palabras únicas. La forma más fácil de agregar alias a Bash es insertándolos al final del archivo “~/.bashrc”. Por conveniencia y organización, se considera mejor colocarlos en un archivo separado.
Es probable que este archivo ya exista, y la configuración de Bash incluya una referencia a él. Verifica si es así abriendo “~/.bashrc” en tu procesador de texto favorito y busca:
if[-f ~/.bash_aliases]; then . ~/.bash_aliases Fi
Si no, agrégalo al final del archivo después de todo lo que ya está allí.

Tener a mano la información de 7-Zip
Puedes ejecutar 7-Zip en una terminal para ver un resumen de sus opciones de línea de comandos. Para obtener información más completa, visita esta guía de usuario o la página del manual del programa con:
man 7z
Estos te ayudarán a configurar tus propios comandos de compresión. Lo más probable es que los que veremos aquí también cubran tus necesidades. Así que puedes copiarlos y pegarlos en tu propio archivo .bash_aliases.

Crear el alias de ultra-compresión
Abre el archivo “~/.bash_aliases” en tu procesador de texto favorito – nosotros usamos nano. Ingresa:
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on'

alias 75 dice que queremos crear el comando “75” que usaremos de ahora en adelante para comprimir todos los archivos y carpetas en un directorio en un paquete 7-Zip. La razón por la que adoptamos este nombre peculiar para nuestro comando es porque es fácil de recordar como una versión corta de “nivel de compresión 7zip 5.”
7z es el comando de compresión en sí. La a que lo sigue significa “queremos agregar archivos a un nuevo paquete comprimido.” -r indica que p7zip no debe estar “confinado a la carpeta donde se ejecutó” sino que debe incluir el paquete comprimido final y todas las subcarpetas en él, con todo su contenido.
-t7z -m0=lzma2 indica que queremos crear paquetes 7zip que utilicen principalmente el algoritmo LZMA2 para la compresión de archivos. Esto generalmente produce la mejor compresión para la mayoría de los tipos de archivos.
-mx=9 -myx=9 corresponden al nivel de compresión y a la “cantidad de esfuerzo” que 7-Zip pondrá en analizar el contenido de los archivos a comprimir para encontrar la mejor estrategia de compresión. Cuanto más altos sean sus valores, mayor será la compresión y más pequeño será el paquete producido.
Finalmente, -mqs=on -ms=on define que queremos compresión “sólida”. Esto significa que p7zip comprimirá archivos similares como bloques de datos únicos, logrando resultados aún mejores. La razón por la que existen como una opción que puedes desactivar es que son útiles pero también vienen con dos negativos. Prolongan el tiempo de compresión y hacen imposible descomprimir archivos independientes del paquete final que produce el compresor. Con compresión sólida, no puedes hacer el equivalente de “extraer un solo archivo de un zip,” y debes descomprimir todo el paquete para acceder a su contenido.
Replicar y “reducir” el alias
Comenzamos con el comando que logra la máxima compresión posible para que, en lugar de tener que extenderlo con más elementos, podamos retroceder, eliminando parámetros y reduciendo los valores establecidos.
Comienza copiando el comando existente cinco veces más, colocando cada comando en su propia línea. Deja la primera línea tal como está, ya que ya logra el nivel de compresión más alto posible. Modifica el resto, en orden, eliminando las opciones adicionales y reduciendo los niveles de compresión como ves a continuación. Recuerda cambiar sus alias para que coincidan con los niveles de compresión más bajos.

Siempre puedes copiar lo siguiente y pegarlo en tu ~/.bash_aliases en su lugar.
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on' alias 74='7z a -r -t7z -m0=lzma2 -mx=9' alias 73='7z a -r -t7z -m0=lzma2 -mx=7' alias 72='7z a -r -t7z -m0=lzma2 -mx=5' alias 71='7z a -r -t7z -m0=lzma2 -mx=3' alias 70='7z a -r -t7z -m0=lzma2 -mx=1'
Activar tus alias
Guarda los cambios en el archivo y regresa a la terminal. Para cargar y activar tus nuevos alias, usa el comando:
source ~/.bashrc
Tus nuevos comandos de compresión están activos. P7zip opera por defecto en todos los archivos en el directorio donde se ejecuta si no defines “qué quieres comprimir” como un parámetro. Así que todo lo que necesitas hacer de ahora en adelante cuando quieras comprimir el contenido de una carpeta en un paquete 7z es ingresar el comando:
75 nombre_del_archivo
Aquí “75” es el alias para el nivel de compresión más alto de antes, y “nombre_del_archivo” es el nombre del paquete de archivo comprimido. Puedes reemplazar “75” con uno de los otros alias (del 75 al 70) para compresiones más pequeñas pero más rápidas, y usar el nombre que desees para el archivo final.

Si tienes alguna pregunta, háznoslo saber en los comentarios a continuación.