¿Por qué los archivos tar.xz creados con Python son más pequeños que los creados con tar por defecto?
(superuser.com)-
Los archivos creados con
tarde macOS resultan ser 15 veces más grandes que los creados con la funcióntarfilede Python -
Causa: BSD/GNU
tarmete los archivos dentro del comprimido sin un orden determinado, por lo que, según el tipo de archivos, la tasa de compresión puede empeorar
→ La función tarfile de Python usa ordenamiento por defecto
- En GNU
tar, es posible usar la opción--sortpara ordenarlos porname/inodeantes de incluirlos → al aplicar el ordenamiento, se obtiene la misma tasa de compresión
4 comentarios
No lo entiendo del todo, pero ¿por qué cambia la tasa de compresión al aplicar ordenamiento? La tasa de compresión de cada archivo individual debería ser la misma.
El algoritmo que se está usando es Deflate. Este guarda en una ventana deslizante el contenido que ya se usó para la compresión. Si esta vez procesó 10 bytes, esos 10 bytes procesados actualmente se agregan al final de la ventana deslizante, y el tamaño de la ventana se mantiene fijo.
Cuando se encuentra contenido igual al que está guardado en la ventana deslizante, se comprime escribiendo en su lugar un LLD (Literal, Length, Distance).
Distanceindica desde qué punto de la ventana deslizante empieza el contenido coincidente,Lengthla longitud de esa coincidencia dentro de la ventana deslizante, yLiteralel primer carácter que no coincide.Como en Deflate es importante qué contenido hay dentro de la ventana deslizante, también importa si vio contenido similar justo antes; si ha visto archivos parecidos, es posible que comprima mejor.
Para ver cómo se comprime de esa manera, consulta la siguiente diapositiva. (
gziptambién se basa en Deflate.)https://speakerdeck.com/dalinaum/…
Como el contenido de archivos con el mismo nombre o nombres parecidos dentro de la misma carpeta será similar, la tasa de compresión probablemente será mayor.
Parece que se refiere a que, como el rango en el que se buscan esas coincidencias al comprimir no es tan amplio, si se ordenan los archivos, es más probable que esos similares queden juntos y se compriman mejor.