Sommes de contrôle différentes pour fichiers identiques.
Swiss Knight
Messages postés
1956
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Salut,
Lorsque, sous Ubuntu, je vérifier la somme md5 (ou sha1) d'une photo sur une carte SD et de la même image transférée sur le PC, mais avec renommage, elles diffèrent pour les fichiers JPG mais sont identiques pour les fichiers RAW.
Ex. : DSC_0001.JPG sur la carte SD et 131103_DSC0001.jpg sur le PC <= sommes de contrôles différentes.
Mais DSC_0001.RAW sur la carte SD et 131103_DSC0001.raw sur le PC <= sommes de contrôles identiques.
Si quelqu'un sait pourquoi, ça m'aiderai beaucoup parce que je suis entrain de me faire un petit script pour vérifier si le transfert de touts les images de la carte SD s'est bien effectué avant de la formater.
Merci.
Lorsque, sous Ubuntu, je vérifier la somme md5 (ou sha1) d'une photo sur une carte SD et de la même image transférée sur le PC, mais avec renommage, elles diffèrent pour les fichiers JPG mais sont identiques pour les fichiers RAW.
Ex. : DSC_0001.JPG sur la carte SD et 131103_DSC0001.jpg sur le PC <= sommes de contrôles différentes.
Mais DSC_0001.RAW sur la carte SD et 131103_DSC0001.raw sur le PC <= sommes de contrôles identiques.
Si quelqu'un sait pourquoi, ça m'aiderai beaucoup parce que je suis entrain de me faire un petit script pour vérifier si le transfert de touts les images de la carte SD s'est bien effectué avant de la formater.
Merci.
A voir également:
- Sommes de contrôle différentes pour fichiers identiques.
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Fan controle - Télécharger - Optimisation
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
4 réponses
hello
comment sont transférés les fichiers ? avec des commandes genre copy ou dd ?
des différences reportées par identify -verbose fichier.jpg ?
comment sont transférés les fichiers ? avec des commandes genre copy ou dd ?
des différences reportées par identify -verbose fichier.jpg ?
Salut,
Je n'ai pas précisé, c'est vrai (je suis sous Lucid au passage) :
les photos sont transférées avec un soft appelé Rapid Photo Downloader qui permet justement de les renommer au passage selon certains paramètres (dates de prise de vue, étiquette pour créer des dossiers par ex.)
Après, derrière, je ne sais pas sur quoi il se base pour effectuer le transfert.
https://damonlynch.net/rapid/
http://doc.ubuntu-fr.org/rapid-photo-downloader
Oui il y a des différences entre deux fichiers avec lesquels j'essaie la commande identify -verbose fichier.jpg :
Ligne 1 : le chemin d'accès passé à la commande identify change entre les deux fichiers. Forcément.
Lignes 60-61 :
date create : ne sont pas identiques (plus récents sur le fichier présent sur le PC)
et date modify : l'heure du fichier PC est shiftée de -1 par rapport au fichier de la carte SD.
Ligne 77 : exif:ExifOffset : la valeur numérique diffère (340 vs 348)
Ligne 90 : exif:GPSInfo: 43120 vs exif:GPSInfo: 12338
Etc. il y a deux trois autres valeurs numériques qui changent de l'un à l'autre sur certains paramètres exif.
Et pour finir :
Ligne 126 : Profile-exif: 65532 bytes vs Profile-exif: 21036 bytes
Ligne 130 : Filesize: 1.798MB vs Filesize: 1.753MB
Lignes 132,134 :
Pixels per second: 28.22M
User time: 0.560u
Elapsed time: 0:01.570
vs
Pixels per second: 29.25M
User time: 0.540u
Elapsed time: 0:01.550
Merci.
Je n'ai pas précisé, c'est vrai (je suis sous Lucid au passage) :
les photos sont transférées avec un soft appelé Rapid Photo Downloader qui permet justement de les renommer au passage selon certains paramètres (dates de prise de vue, étiquette pour créer des dossiers par ex.)
Après, derrière, je ne sais pas sur quoi il se base pour effectuer le transfert.
https://damonlynch.net/rapid/
http://doc.ubuntu-fr.org/rapid-photo-downloader
Oui il y a des différences entre deux fichiers avec lesquels j'essaie la commande identify -verbose fichier.jpg :
Ligne 1 : le chemin d'accès passé à la commande identify change entre les deux fichiers. Forcément.
Lignes 60-61 :
date create : ne sont pas identiques (plus récents sur le fichier présent sur le PC)
et date modify : l'heure du fichier PC est shiftée de -1 par rapport au fichier de la carte SD.
Ligne 77 : exif:ExifOffset : la valeur numérique diffère (340 vs 348)
Ligne 90 : exif:GPSInfo: 43120 vs exif:GPSInfo: 12338
Etc. il y a deux trois autres valeurs numériques qui changent de l'un à l'autre sur certains paramètres exif.
Et pour finir :
Ligne 126 : Profile-exif: 65532 bytes vs Profile-exif: 21036 bytes
Ligne 130 : Filesize: 1.798MB vs Filesize: 1.753MB
Lignes 132,134 :
Pixels per second: 28.22M
User time: 0.560u
Elapsed time: 0:01.570
vs
Pixels per second: 29.25M
User time: 0.540u
Elapsed time: 0:01.550
Merci.
ps : il y a dans le résultat de la commande identify, une ligne "signature", elle veut dire quoi (si quelqu'un sait...) ?
J'ai vérifié ; il ne s'agit apparemment pas de la somme md5 ni sha.
Existe-t-il une commande pour ne sortir que cette ligne signature ?
EDIT : alors j'ai trouvé la réponse à cette question ici :
https://imagemagick.org/index.php
Je ne sais pas si c'est mieux d'utiliser ça, ou une somme shaX pour vérifier si deux images sont identiques ou non.
Apparemment les sommes de contrôles sont plus sensibles puisqu'elles changent sur les fichiers jpg (et non les raw) après un simple transfert (j'ai encore vérifié : un cp source/image.jpg Desktop/imagecopiee.jpg change déjà ces sommes de contrôle) tandis que les signatures ne changent pas.
J'ai vérifié ; il ne s'agit apparemment pas de la somme md5 ni sha.
Existe-t-il une commande pour ne sortir que cette ligne signature ?
EDIT : alors j'ai trouvé la réponse à cette question ici :
https://imagemagick.org/index.php
%# CALCULATED: 'signature' hash of image valuesdonc avec un identify -format "%#" image.jpg on sort uniquement la signature.
Je ne sais pas si c'est mieux d'utiliser ça, ou une somme shaX pour vérifier si deux images sont identiques ou non.
Apparemment les sommes de contrôles sont plus sensibles puisqu'elles changent sur les fichiers jpg (et non les raw) après un simple transfert (j'ai encore vérifié : un cp source/image.jpg Desktop/imagecopiee.jpg change déjà ces sommes de contrôle) tandis que les signatures ne changent pas.
les dates sont différentes, c'est normal mais elles ne sont pas dans le fichier.
il suffit que le soft de copie change 1 bit et les signatures seront différentes.
il suffit que le soft de copie change 1 bit et les signatures seront différentes.
$ identify -verbose fichier.jpg | awk '/signa/ {print $2}'
Okay, mais la somme md5 ou sha est plus sensible puisqu'un changement dans les méta données change cette somme de calcul, quand bien même l'image est strictement identique.
Mais la signature ne change pas elle. Même après ces quelques petits changements lors du transfert. Je vais donc me basé sur cette valeur pour vérifier si mes images ont bien été copiées sur le disque.
J'ai juste un petit problème à résoudre :
les commandes identify -verbose fichier.jpg | awk '/signa/ {print $2}'
ou identify -format "%#" fichier.jpg
me donnent exactement le même résultat : la valeur de la signature de fichier.jpg.
C'est très bien.
Mais je souhaite faire en sorte que cette valeur apparaisse dans la seconde colonne d'un fichier, et que, dans la 1ère on trouve le nom du fichier. Comme ça, visuellement, lorsque j'ouvre le fichier, je peux être sûr que telle signature correspond à tel fichier.
Pour l'instant j'ai ce petit bout de code :
Mais cat ne permet pas la concaténation horizontale.
Et je ne sais pas si on peut faire un truc du genre :
Du moins, ça ne fonctionne en tout cas pas comme ça ; il y a le nom du fichier sur une ligne et sa signature sur la suivante.
Je devrais trouver comment résoudre ça sans trop de difficulté.
Mais ensuite il faudra que je modifie ce bout de script pour qu'il vérifie parmi les images présentes sur le PC, UNIQUEMENT celles qui portent le même nom que ceux qui existent sur la carte SD. Pour éviter de passer en revue les XXXX photos présentent sur l'ordi qui auraient été uploadées depuis d'autres cartes par exemple.
Affaire à suivre.
Mais la signature ne change pas elle. Même après ces quelques petits changements lors du transfert. Je vais donc me basé sur cette valeur pour vérifier si mes images ont bien été copiées sur le disque.
J'ai juste un petit problème à résoudre :
les commandes identify -verbose fichier.jpg | awk '/signa/ {print $2}'
ou identify -format "%#" fichier.jpg
me donnent exactement le même résultat : la valeur de la signature de fichier.jpg.
C'est très bien.
Mais je souhaite faire en sorte que cette valeur apparaisse dans la seconde colonne d'un fichier, et que, dans la 1ère on trouve le nom du fichier. Comme ça, visuellement, lorsque j'ouvre le fichier, je peux être sûr que telle signature correspond à tel fichier.
Pour l'instant j'ai ce petit bout de code :
pathtocheck="/media/sdcard/pictures"
for file in $(find "${pathtocheck}" -iname *.jpg)
do echo "${file}" >> filenamecheck.txt
identify -format "%#" "${file}" >> filecheck.txt
done
wait
cat filenamecheck.txt filecheck.txt > out.txt
Mais cat ne permet pas la concaténation horizontale.
Et je ne sais pas si on peut faire un truc du genre :
for file in $(find "${pathtocheck}" -iname *.jpg)
do echo "${file}" >> filenamecheck.txt & identify -format "%#" "${file}" >> filecheck.txt
done
Du moins, ça ne fonctionne en tout cas pas comme ça ; il y a le nom du fichier sur une ligne et sa signature sur la suivante.
Je devrais trouver comment résoudre ça sans trop de difficulté.
Mais ensuite il faudra que je modifie ce bout de script pour qu'il vérifie parmi les images présentes sur le PC, UNIQUEMENT celles qui portent le même nom que ceux qui existent sur la carte SD. Pour éviter de passer en revue les XXXX photos présentent sur l'ordi qui auraient été uploadées depuis d'autres cartes par exemple.
Affaire à suivre.