Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/02/2025, à 22:08

pascal06

Commande diff sur fichiers non texte

Bonsoir à toutes et tous,
j'aimerais comprendre comment fonctionne la commande diff sur des fichiers quelconques (non texte) genre binaire, images, etc...
Dans le cas de la comparaisons de fichiers binaires, est ce que la commande se limite à comparer les attributs des fichiers retournés par le système (taille, horodatage ...) ou est qu'elle va analyser octets par octets chacun des fichiers ?
Mon utilisation typique:
vérifier un DVD de données que je viens de graver (contenant des photos, des vidéos...):

diff -r ~/Images/A_Graver/disque1 /media/pascal/disque1/

Xubuntu 20.04.4 LTS

En ligne

#2 Le 13/02/2025, à 11:24

Vobul

Re : Commande diff sur fichiers non texte

Oui ça analyse octet par octet.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 13/02/2025, à 12:18

RaphaelG

Re : Commande diff sur fichiers non texte

Moi, j'aurais tendance à utiliser diff sur des fichiers texte et cmp sur des fichiers quelconques.
L'inconvénient est que tu utilises l'option -r (recursive) qui n'existe pas chez cmp. (D'ailleurs, je ne sais pas du tout comment elle fonctionne cette option -r)
C'eût été intéressant que tu nous donnes le retour de ta commande et que tu la relances après avoir introduit un fichier quelconque dans ~/Images/A_Graver/disque1/.

@Vobul
man de diff : compare files line by line
man de cmp : compare two files byte by byte
Mais c'est vrai que les 2 semblent fonctionner sur des fichiers binaires.

 
~$ cd /usr/bin
bin$ file mawk md5sum
mawk:   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=494bf68b5d79237540c361e7eea3d896e818ade1, for GNU/Linux 3.2.0, stripped
md5sum: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=03c3bca9e5fb63f1188a797607a74a872dbecd9d, for GNU/Linux 3.2.0, stripped
bin$ diff mawk md5sum
Binary files mawk and md5sum differ
bin$ echo $?
1
bin$ cmp mawk md5sum
mawk md5sum differ: byte 25, line 1
bin$ echo $?
1
bin$

cmp voit aussi des lignes dans mawk et md5sum. Confusant.

Hors ligne

#4 Le 13/02/2025, à 20:32

pascal06

Re : Commande diff sur fichiers non texte

RaphaelG a écrit :

Moi, j'aurais tendance à utiliser diff sur des fichiers texte et cmp sur des fichiers quelconques.
L'inconvénient est que tu utilises l'option -r (recursive) qui n'existe pas chez cmp. (D'ailleurs, je ne sais pas du tout comment elle fonctionne cette option -r)
C'eût été intéressant que tu nous donnes le retour de ta commande et que tu la relances après avoir introduit un fichier quelconque dans ~/Images/A_Graver/disque1/.

Bonsoir,
l'option -r sert à tester tous les fichiers dans les dossiers de manière récursives.
Sans autre options, si les dossiers sont identiques la commande ne retourne rien. S'il y a par exemple un fichier en plus dans l'un des dossiers, il va être indiqué.
Par exemple, je viens de tester à nouveau un des DVD, il y a un seul fichier de différence (un projet K3b):

pascal@pascal-Latitude-E6540:~$ diff -r ~/Images/A_Graver/disque1 /media/pascal/Photos\ 2019-20
Seulement dans /home/pascal/Images/A_Graver/disque1: Photos 2019 - 2020.k3b

Xubuntu 20.04.4 LTS

En ligne

#5 Le 13/02/2025, à 22:51

pascal06

Re : Commande diff sur fichiers non texte

Autre exemple avec un disque qui visiblement n'est pas bon:

pascal@pascal-Latitude-E6540:~$ diff -r ~/Images/A_Graver/disque5 /media/pascal/Photos\ 2023
diff: /media/pascal/Photos 2023/2023-05-18 - Vacances xxx.jpg: Erreur d'entrée/sortie

Xubuntu 20.04.4 LTS

En ligne

#6 Le 15/02/2025, à 14:43

RaphaelG

Re : Commande diff sur fichiers non texte

J'ai l'impression que diff et cmp peuvent travailler sur tous types de fichiers, texte ou binaire.
Pour le fun, on pourrait faire un script un peu plus chiadé qui :
- irait chercher les fichiers sur /home/pascal avec un find,
- controllerait leur présence sur /media/pascal/Photos* avec un "test -f",
- vérifierait qu'ils ont le même contenu avec un cmp.
Mais est ce que ça vaut le coup puisque avec "diff -r" tu as trouvé un moyen simple de vérifier tes sauvegardes ?

Hors ligne