Existe-t-il un programme de compression ou d'archivage pour Windows qui effectue également la déduplication? [fermé]

12

Je recherche un programme d'archivage capable d'effectuer une déduplication (déduplication) sur les fichiers archivés. Lors du déballage de l'archive, le logiciel remettrait tous les fichiers supprimés pendant le processus de compression.

Jusqu'à présent, j'ai trouvé:

Quelqu'un en connaît-il d'autres?

Ce serait probablement un ajout génial au 7-zip.

Larry Silverman
la source

Réponses:

12

Presque tous les archiveurs modernes font exactement cela, la seule différence est qu'ils se réfèrent à cela comme une archive "solide", car dans tous les fichiers sont concaténés en un seul flux avant d'être alimentés par l'algorithme de compression. Ceci est différent de la compression zip standard qui comprime chaque fichier un par un et ajoute chaque fichier compressé à l'archive.

7-zip, par sa nature même, permet efficacement la déduplication. 7-Zip, par exemple, recherchera les fichiers, les triera par types de fichiers et noms de fichiers similaires et donc deux fichiers du même type et des données seront placés côte à côte dans le flux allant aux algorithmes du compresseur. Le compresseur verra alors beaucoup de données qu'il a vues très récemment et ces deux fichiers verront une grande augmentation de l'efficacité de compression par rapport à la compression des fichiers un par un.

Linux a vu un comportement similaire depuis longtemps grâce à la prévalence de leur format ".tgz" (ou ".tar.gz" pour utiliser sa forme complète) car le tar fusionne simplement tous les fichiers en un seul flux (bien que sans tri et regroupement des fichiers), puis compression avec gzip. Ce qui manque, c'est le tri effectué par 7-zip, ce qui peut légèrement diminuer l'efficacité mais est toujours bien meilleur que de simplement blober un grand nombre de fichiers compressés individuellement comme le fait zip.

Mokubai
la source
Apprenez quelque chose de nouveau tous les jours. Je ne savais pas que zip compressait chaque fichier séparément mais après avoir exécuté quelques tests sur mon ordinateur, j'ai réalisé que vous aviez bien raison. très intéressant, merci!
CenterOrbit
7ip fait un bon travail de déduplication, mais il est également conçu pour compresser efficacement les données non dupliquées, et utilise beaucoup de CPU et de mémoire pour y parvenir, ce qui en fait un moyen très inefficace de dédupliquer les données. Si vous compressez deux fichiers identiques de 100 Mo, il faudra beaucoup de mal pour essayer de compresser le premier fichier efficacement, puis seulement (si la taille du dictionnaire est suffisamment grand) compresser le deuxième fichier en tant que double du premier.
mwfearnley
Gzip ne compresse-t-il .tar.gzqu'avec des blocs relativement petits (comme 900 Ko) à la fois complètement indépendamment les uns des autres et n'a donc pas la possibilité de dédupliquer deux fichiers volumineux mais identiques (par exemple, quelques images de 4 Mo)?
binki
Par exemple, 7z a pu se dédupliquer entre des fichiers volumineux mais gzip ne l'a pas été: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki
4

Il est inutile d'utiliser la déduplication avec un processus de compression. La plupart des algorithmes de compression créent ce qu'on appelle un «dictionnaire» qui recherchera les bits de données les plus courants ou réutilisés. à partir de là, il fera simplement référence à l'entrée du dictionnaire au lieu de réécrire le «mot» entier. De cette façon, la plupart des processus de compression suppriment déjà les données redondantes ou dupliquées de tous les fichiers.

Par exemple, si vous prenez un fichier de 1 Mo et le copiez 100 fois avec un nom différent à chaque fois (pour un total de 100 Mo d'espace disque), puis vous le compressez dans un fichier 7zip ou zip, vous aurez un fichier zip total de 1 Mo. En effet, toutes vos données ont été placées dans une seule entrée de dictionnaire et référencées 100 fois, ce qui prend très peu de place.

Il s'agit d'une explication très simple de ce qui se passe, mais le point est toujours bien exprimé.

CenterOrbit
la source
1
Comme la taille du dictionnaire est très limitée pour la plupart des archives de compression, cela n'est pas valable pour une utilisation quotidienne. Essayez ceci avec des fichiers de 50 Mo et votre taille compressée doublera avec deux fichiers d'entrée identiques.
Chaos_99
1
Les fichiers Zip, contrairement aux fichiers 7zip, ne prennent pas en charge la déduplication entre les fichiers. Les fichiers Zip compressent et stockent chaque fichier séparément, donc les fichiers en double seront simplement stockés plusieurs fois dans l'archive.
mwfearnley
1
Bien que 7zip prenne en charge la déduplication entre les fichiers, il est conçu pour rechercher et compresser des correspondances beaucoup plus courtes. Ses algorithmes sont beaucoup plus lents et utilisent davantage de mémoire que ce qui est potentiellement possible pour quelque chose conçu pour trouver une duplication de données à grande échelle.
mwfearnley
4

7-Zip, zip, gzip et tous les autres archiveurs ne détectent pas les zones identiques qui sont éloignées les unes des autres, telles que quelques mégaoctets ou plus, dans le même fichier ou placées à différentes positions dans différents fichiers.

Donc non, les archiveurs normaux ne fonctionnent pas aussi bien que exdupe et autres, dans certaines situations. Vous pouvez le voir si vous compressez certaines machines virtuelles ou d'autres choses.

Ian
la source
1
C'est correct. Dès que le volume de données unique dépasse la taille du dictionnaire des compresseurs, la compression diminue. exdupe offre des performances supérieures pour les gros volumes de données.
usr