¿Existe un programa de compresión o archivador para Windows que también haga deduplicación? [cerrado]

12

Estoy buscando un programa de archivador que pueda realizar deduplicación (dedupe) en los archivos que se archivan. Al desempacar el archivo, el software volvería a colocar los archivos que eliminó durante el proceso de compresión.

Hasta ahora he encontrado:

Alguien consciente de otros?

Esto probablemente sería una increíble adición a 7-zip.

Larry Silverman
fuente

Respuestas:

12

Casi todos los archivadores modernos hacen exactamente esto, la única diferencia es que se refieren a esto como un archivo "sólido", ya que en todos los archivos se concatenan en una sola secuencia antes de pasar al algoritmo de compresión. Esto es diferente de la compresión zip estándar que comprime cada archivo uno por uno y agrega cada archivo comprimido al archivo.

7-zip por su propia naturaleza logra efectivamente la desduplicación. 7-Zip, por ejemplo, buscará archivos, los ordenará por tipos de archivo y nombres de archivo similares, por lo que dos archivos del mismo tipo y datos se colocarán uno al lado del otro en la secuencia que va a los algoritmos del compresor. El compresor verá una gran cantidad de datos que ha visto recientemente y esos dos archivos verán un gran aumento en la eficiencia de compresión en comparación con la compresión de los archivos uno por uno.

Linux ha visto un comportamiento similar durante mucho tiempo a través de la prevalencia de su formato ".tgz" (o ".tar.gz" para usar su forma completa) ya que el tar simplemente fusiona todos los archivos en una sola secuencia (aunque sin ordenar y agrupar archivos) y luego comprimirlos con gzip. Lo que se pierde es la clasificación que está haciendo 7-zip, lo que puede disminuir ligeramente la eficiencia, pero sigue siendo mucho mejor que simplemente juntar una gran cantidad de archivos comprimidos individualmente como lo hace zip.

Mokubai
fuente
Aprenda algo nuevo cada día. No me di cuenta de que zip comprimió cada archivo por separado, pero después de ejecutar un par de pruebas en mi computadora, me di cuenta de que realmente estás en lo correcto. muy interesante, gracias!
CenterOrbit
7ip hace un buen trabajo de deduplicación, pero también está diseñado para comprimir datos no duplicados de manera eficiente, y utiliza una gran cantidad de CPU y memoria para lograrlo, lo que lo convierte en una forma muy ineficiente de deduplicar datos. Si comprime dos archivos idénticos de 100 MB, tendrá muchos problemas intentar comprimir el primer archivo de manera eficiente, y solo entonces (si el tamaño del diccionario es lo suficientemente grande) comprima el segundo archivo como un duplicado del primero.
mwfearnley
¿Gzip con .tar.gzsolo comprime bloques relativamente pequeños (como 900 KB) a la vez de forma completamente independiente el uno del otro y, por lo tanto, no tiene la capacidad de deduplicar dos archivos grandes pero idénticos (por ejemplo, un par de imágenes de 4 MB)?
binki
Por ejemplo, 7z pudo deducir entre archivos grandes, pero gzip no fue: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki
4

No tiene sentido utilizar la deduplicación con un proceso de compresión. La mayoría de los algoritmos de compresión crean lo que se llama un 'diccionario' que buscará los bits de datos más comunes o reutilizados. a partir de ahí, solo hará referencia a la entrada del diccionario en lugar de escribir la "palabra" completa nuevamente. De esta manera, la mayoría de los procesos de compresión ya eliminan datos redundantes o duplicados de todos los archivos.

Por ejemplo, si toma un archivo de 1 MB y lo copia 100 veces con un nombre diferente cada vez (con un total de 100 MB de espacio en disco), lo comprime en un archivo zip o 7zip, tendrá un archivo zip total de 1 MB. Esto se debe a que todos sus datos se colocaron en una entrada del diccionario y se referenciaron 100 veces, lo que ocupa muy poco espacio.

Esta es una explicación muy simple de lo que sucede, pero el punto aún se transmite bien.

CenterOrbit
fuente
1
Como el tamaño del diccionario es muy limitado para la mayoría de los archivos de compresión, esto no es válido en el uso diario. Pruebe esto con archivos de 50 MB y su tamaño comprimido se duplicará con dos archivos de entrada idénticos.
Chaos_99
1
Los archivos zip, a diferencia de los archivos 7zip, no admiten la deduplicación en todos los archivos. Los archivos Zip comprimen y almacenan cada archivo por separado, por lo que los archivos duplicados simplemente se almacenarán varias veces en el archivo.
mwfearnley
1
Si bien 7zip admite la deduplicación entre archivos, está diseñado para encontrar y comprimir coincidencias mucho más cortas. Sus algoritmos son mucho más lentos e intensivos en memoria que lo que es potencialmente posible para algo diseñado para encontrar duplicación de datos a gran escala.
mwfearnley
4

7-Zip, zip, gzip y todos los demás archivadores no detectan áreas idénticas que están lejos una de otra, como solo unos pocos megabytes o más, dentro del mismo archivo o colocadas en diferentes posiciones dentro de diferentes archivos.

Entonces, no, los archivadores normales no funcionan tan bien como exdupe y otros, en algunas situaciones. Puede ver esto si comprime algunas máquinas virtuales u otras cosas.

Ian
fuente
1
Esto es correcto. Tan pronto como el volumen de datos único excede el tamaño del diccionario de compresores, la compresión se va por el desagüe. exdupe ofrece un rendimiento superior para grandes volúmenes de datos.
usr