OVH Cloud OVH Cloud

Comparer deux fichiers ?

11 réponses
Avatar
Mag
Bonjour,

Comment faire pour comparer deux fichiers
pour savoir si ils sont identiques (sans tenir
compte de la date/heure du fichier) ?

Qui me donnerais comme retour un resultat 0 ou 1 si
le fichier est identique

merci d'avance

10 réponses

1 2
Avatar
espie
In article <45c34a24$0$26590$,
Mag wrote:
Bonjour,

Comment faire pour comparer deux fichiers
pour savoir si ils sont identiques (sans tenir
compte de la date/heure du fichier) ?

Qui me donnerais comme retour un resultat 0 ou 1 si
le fichier est identique

merci d'avance


File::Compare

Avatar
tfe
Une autre idée, peut-être en se basant sur le md5 du fichier.

--
tfe
Avatar
Paul Gaborit
À (at) 2 Feb 2007 07:05:46 -0800,
"tfe" écrivait (wrote):
Une autre idée, peut-être en se basant sur le md5 du fichier.


C'est comme la preuve par neuf : si ça diffère, les fichiers
diffèrent.

Par contre, si c'est égal, on ne sait pas si les fichiers sont égaux
ou si on vient enfin de trouver accidentellement une collision
MD5. ;-)

Mais le vrai souci est le suivant : c'est long à calculer et cela
nécessite de parcourir tout le fichier. Donc ce n'est pas plus
efficace (et c'est même moins efficace) que File::Compare.

Le MD5 (ou le SHA) devient vraiment intéressant à partir du moment où
on veut comparer un seul fichier à plein d'autres... ou si on veut
stocker l'état d'un fichier sans le recopier (pour vérifier ensuite
s'il a changé ou non).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Nicolas George
Paul Gaborit wrote in message :
Le MD5 (ou le SHA) devient vraiment intéressant à partir du moment où
on veut comparer un seul fichier à plein d'autres... ou si on veut
stocker l'état d'un fichier sans le recopier (pour vérifier ensuite
s'il a changé ou non).


Il y a d'autres cas où ça peut être plus intéressant, surtout si on accepte
le risque de collision fortuite. Par exemple, je te déconseille de comparer
naïvement deux gros fichiers lus depuis un même CD.

Avatar
espie
In article <45c38464$0$21582$,
Nicolas George <nicolas$ wrote:
Paul Gaborit wrote in message :
Le MD5 (ou le SHA) devient vraiment intéressant à partir du moment où
on veut comparer un seul fichier à plein d'autres... ou si on veut
stocker l'état d'un fichier sans le recopier (pour vérifier ensuite
s'il a changé ou non).


Il y a d'autres cas où ça peut être plus intéressant, surtout si on accepte
le risque de collision fortuite. Par exemple, je te déconseille de comparer
naïvement deux gros fichiers lus depuis un même CD.


J'aurais tendance a dire: c'est le boulot de File::Compare.

Au moins, on a une interface propre. Apres, on doit pouvoir rajouter
telle ou telle heuristique qui va simplifier les choses.

Deja, File::Compare verifie la taille des fichiers.


Avatar
Mag
In article <45c34a24$0$26590$,
Mag wrote:
Bonjour,

Comment faire pour comparer deux fichiers
pour savoir si ils sont identiques (sans tenir
compte de la date/heure du fichier) ?

Qui me donnerais comme retour un resultat 0 ou 1 si
le fichier est identique

merci d'avance


File::Compare



Merci, auriez vous un exemple d'utilisation de fille::copare ?


Avatar
espie
In article <45c41c8c$0$18990$,
Mag wrote:


Merci, auriez vous un exemple d'utilisation de fille::copare ?


perldoc File::Compare

t'en donne un.

Avatar
Paul Gaborit
À (at) 02 Feb 2007 18:35:16 GMT,
Nicolas George <nicolas$ écrivait (wrote):
Paul Gaborit wrote in message :
Le MD5 (ou le SHA) devient vraiment intéressant à partir du moment où
on veut comparer un seul fichier à plein d'autres... ou si on veut
stocker l'état d'un fichier sans le recopier (pour vérifier ensuite
s'il a changé ou non).


Il y a d'autres cas où ça peut être plus intéressant, surtout si on accepte
le risque de collision fortuite. Par exemple, je te déconseille de comparer
naïvement deux gros fichiers lus depuis un même CD.


C'est un cas un peu particulier... mais recevable, j'en conviens. ;-)

Quant au risque de collision MD5, il est quand même extrêmement faible
voire inexistant. Théoriquement, il est d'au moins 1/(2^128).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
Emmanuel Florac
Le Mon, 05 Feb 2007 13:40:40 +0100, Paul Gaborit a écrit :


Quant au risque de collision MD5, il est quand même extrêmement faible
voire inexistant. Théoriquement, il est d'au moins 1/(2^128).


Il est possible de forger des fichiers avec le même md5. Cependant, je
pense qu'il est extraordinairement difficile de faire deux fichiers ayant
à la fois le même md5 et le même sha-1, ou autre :)

--
Mais monsieur, voudriez-vous que je me l'écorchasse?
Barbey d'Aurevilly.

Avatar
Nicolas George
Emmanuel Florac wrote in message
:
Il est possible de forger des fichiers avec le même md5.


Mais ça n'arrive pas par hasard. Il faut voir quel est l'enjeu de la
comparaison.

Cependant, je
pense qu'il est extraordinairement difficile de faire deux fichiers ayant
à la fois le même md5 et le même sha-1, ou autre :)


Sachant qu'on ne sait toujours pas faire de collisions SHA-1, si je ne me
trompe, c'est une évidence. Mais si on veut plus gros, il vaut probablement
mieux chercher vers un hash conçu directement plus gros, comme SHA-256 ou
SHA-512.

1 2