[gull] Petit problème de maths, pour créer de liens

Leopoldo Ghielmetti leopoldo.ghielmetti at a3.epfl.ch
Mon May 5 21:17:10 CEST 2008


Il giorno gio, 01/05/2008 alle 14.01 +0200, Daniel Cordey ha scritto:
> On Wednesday 30 April 2008, Félix Hauri wrote:
> 
> > Voici un petit problème de math, pour les férus de hashage.
> 
> Est-ce bien necessaire :-)
> 
> > Une des solutions (avant la compression) consiste à lier par liens durs
> > tous les fichiers identiques, afin de conserver les structures de
> > répertoires et l'intégrité des données, tout en rationnalisant l'espace
> > occupé.
> 
> Sehr gut Felix :-)
> 
> 
> > La première étape s'est déroulée en environ 6heures, pour la collecte des
> > md5sums. Le deuxième, nettement plus contraignante pour le disque dur, à
> > pris 3-4 jours...
> > Au terme, j'ai récupéré 38Go, soit près de la moitié et mes répertoires
> > sont intégres.
> >...
> 
> Donc, sans repeter ce que Marc Mongenet a deja dit, je me pencherais sur la 
> necessite d'utiliser md5 sur tous les fichiers...
> 
> En effet, dans le but de perdre un minimum de temps, je me contanterais donc 
> d'etablir une liste croissee inode et... taille des fichiers... Puis, pour 
> tous les inodes ayant la meme taille, je calculerais le md*... A mon avis, 
> cela devrait retreindre drastiquement le nombre de calculs a effectuer... 
> Non ? Je pars du principe que, si un fichier a une taille differente, le fait 
> qu'il puisse exister, dans l'absolu, un md5 identique pour leur contenu ne 
> m'interesse pas, puisque je sais deja qu'il ont au moins 1 byte de 
> difference. Je me content donc de n'effectuer un calcul md5 que si j'ai deja 
> une identite potentiel entre eux, simplement base sur la taille. J'utilise 
> donc md5 (ou autre) pour lever ou confirmer le doute.

C'est ce que moi j'ai fait (voir le script attaché).

Je sais que ce n'est peut être pas un script très propre mais il marche
assez bien pour mes besoins. :-)

Ce script calcule le md5 et la taille de chaque fichier qu'on lui dit
d'analyser (il parcourt le répertoire donné et prends tous ce qu'il y a
dedans) et effectue un ln sur les fichier équivalents en conservant la
date du plus ancien. Les md5 et les tailles sont stockés dans un fichier
compressé qui peut être utilisé ultérieurement pour éviter de
re-comparer les fichiers en cas d'une exécution ultérieure (pratiquement
un cache).

Il est lent la première fois mais plus rapide les fois suivantes.

Bien entendu il n'effectue le travail que sur les fichiers d'un même FS
(il y a un fichier de cache pour chaque FS).

> Au final, le resultat sera le meme que ce que tu as deja fait, mais il se peut 
> que cela prenne moisn de temps.
> 
> dc

Je suis ouvert à toute suggestion d'amélioration. :-)

ciao, Leo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: relinkdup
Type: application/x-shellscript
Size: 3045 bytes
Desc: not available
URL: <http://forum.linux-gull.ch/pipermail/gull/attachments/20080505/9e30baa5/attachment.bin>


More information about the gull mailing list