Façons de dédupliquer les fichiers

10

Je veux simplement sauvegarder et archiver les fichiers sur plusieurs machines. Malheureusement, les fichiers ont des fichiers volumineux qui sont le même fichier mais stockés différemment sur différentes machines. Par exemple, il peut y avoir quelques centaines de photos qui ont été copiées d'un ordinateur à l'autre en tant que sauvegarde ad hoc. Maintenant que je veux créer un référentiel commun de fichiers, je ne veux pas plusieurs copies de la même photo.

Si je copie tous ces fichiers dans un seul répertoire, y a-t-il un outil qui peut passer par et reconnaître les fichiers en double et me donner une liste ou même supprimer l'un des doublons?

Utilisateur1
la source
1
en relation: unix.stackexchange.com/questions/3037/…
David Cary

Réponses:

3

Créez une somme md5 de chaque fichier, les doublons md5sums suggèrent (mais ne garantissent pas) les fichiers en double.

Bryan
la source
1
ils "suggèrent" fortement , cependant :) ... et si les fichiers sont de la même taille, la probabilité que la suggestion soit correcte est exceptionnellement élevée
warren
2

Vous pouvez utiliser dupemerge pour transformer les fichiers identiques en liens physiques . Cela prendra cependant très longtemps sur un ensemble de fichiers volumineux. Les hachages SHA (ou MD5) des fichiers fonctionneront presque certainement plus rapidement, mais vous devrez faire plus de travail pour trouver les doublons. La probabilité de collision accidentelle est si faible qu'en réalité vous pouvez l'ignorer. (En fait, de nombreux produits de déduplication le font déjà.)

Votre meilleur pari pour traiter des photos et de la musique est d'obtenir des outils adaptés pour trouver des doublons de ces éléments en particulier. D'autant plus que vous ne pouvez pas avoir de fichiers identiques au niveau binaire après que des choses comme le balisage ou le recadrage ou les différences d'encodage entrent en jeu. Vous aurez besoin d'outils qui peuvent trouver des photos qui "se ressemblent" et de la musique qui "sonne" de la même manière, même si des ajustements mineurs ont été apportés aux fichiers.

afrazier
la source
1
hardlinkest très rapide (a pris 200 secondes pour des fichiers de 1,2 M, 320 Go)
Marcel Waldvogel
1

Eh bien, si vous en avez la possibilité, vous pouvez configurer un système de fichiers de déduplication et y placer vos sauvegardes. Cela permettra non seulement de dédupliquer des fichiers entiers, mais également des morceaux de fichiers similaires. Par exemple, si vous avez le même JPEG à plusieurs endroits, mais avec des balises EXIF ​​différentes sur chaque version, un système de fichiers de déduplication ne stockera les données d'image qu'une seule fois.

Les systèmes de fichiers dédupliqués incluent lessfs, ZFS et SDFS.

Ryan C. Thompson
la source
1
Je ne peux pas parler de déduplication sur SDFS ou lessfs, mais la déduplication sur ZFS ne fonctionne pas comme ça. Il vérifie au niveau du bloc, donc les fichiers identiques seront probablement marqués pour la déduplication, mais les fichiers qui ont un en-tête différent ne le seront probablement pas. De plus, les fichiers plus petits que votre taille d'enregistrement ZFS (la valeur par défaut est 128 Ko) peuvent être regroupés dans un seul bloc, de sorte qu'ils ne bénéficieront pas non plus de la déduplication.
notpeter
Le système de fichiers dédupliqué (zfs ou btrfs) économise uniquement de l'espace sur l'hôte de sauvegarde. Il n'enregistre pas la quantité de données transférées. C'est une idée de calculer un hachage pour les fichiers et de l'envoyer à l'hôte de sauvegarde. quand il dit "Je l'ai", la sauvegarde de ce fichier est effectuée. Ceci est implémenté sur un logiciel de sauvegarde très coûteux (argent). Je n'en ai jamais entendu parler sur l'open source. Mais peut-être qu'il est implémenté maintenant, qui sait :)
Znik
@Znik rsync --link-destest votre ami si vous souhaitez également économiser sur la lecture / le transfert. Une introduction simple est ici: netfuture.ch/2013/08/…
Marcel Waldvogel
il fonctionne en testant les inodes affectés à un fichier. mais lorsque la déduplication est masquée, par exemple dans le système de fichiers squashfs, alors rsync ne peut pas vérifier cela et transférera les mêmes données plusieurs fois.
Znik
0

Quand je faisais ce genre de choses, j'ai appris qu'il est beaucoup plus intéressant / plus efficace de parcourir les fichiers vous-même pendant votre temps libre, au cours de quelques semaines. Vous pouvez mieux faire la différence entre les choses que votre ordinateur.

Si vous n'êtes pas d'accord, je suggère EasyDuplicateFinder . Comme je l'ai mentionné ci-dessus, cependant, cela prendra beaucoup de temps, disons, environ une journée pour 5 Go de fichiers.

Et sur une autre note, Crashplan fait ce que vous faisiez auparavant, mais d'une manière beaucoup plus organisée et sans problème de version.

digitxp
la source
0

Une autre possibilité, en supposant que les machines que vous sauvegardez le prendront en charge, est d'utiliser quelque chose comme rsync.

Si vous passez rsyncde A à B, puis de C à B, puis de D à B, etc., les doublons exacts (par exemple, par nom de fichier) seront éliminés (et synchronisés entre les machines que vous sauvegardez).

Cependant, si vous ne voulez pas qu'ils soient tous synchronisés, ce n'est pas la meilleure façon de procéder.

garenne
la source
0

Pour les fichiers image, utilisez findimagedupes . Il est également empaqueté dans debian .

cweiske
la source
findimagedupes est destiné aux photos ou aux graphiques, peut-être converti d'un format à un autre. photos (i home) n'est qu'un exemple en question. Il peut s'agir de tout autre gros fichier.
Znik
0

Les liens matériels n'effectuent la déduplication que si le fichier entier est identique. Si les en-têtes (EXIF, ID3,…) ou les métadonnées (propriétaire) diffèrent, ils ne seront pas liés.

Lorsque vous avez la possibilité d'utiliser un système de fichiers avec prise en charge de la déduplication de blocs (ZFS, btrfs,…), utilisez-le à la place. J'aime beaucoup la prise en charge de la déduplication hors ligne (aka batch ) de btrfs, qui prend en charge la déduplication au niveau de l'étendue et ne consomme pas constamment d'énormes quantités de mémoire (comme la déduplication en ligne ZFS).

La déduplication a également l'avantage que les fichiers peuvent être modifiés par l'utilisateur sans que l'autre copie ne s'en rende compte (ce qui pourrait ne pas être applicable dans votre cas, mais dans d'autres).

Voir https://btrfs.wiki.kernel.org/index.php/Deduplication pour une excellente discussion.

Marcel Waldvogel
la source