Forums
petit exercice ... !
-
-
Je vais dans un répertoire (www)
ericc@predator:~$ cd www
J'archive et compresse en zip le contenu du répertoire gettext/
ericc@predator:~/www$ zip -r9 gettext ./gettext/
adding: gettext/ (stored 0%)
adding: gettext/localization.php (deflated 36%)
adding: gettext/md5sum.txt (deflated 43%)
adding: gettext/locale/ (stored 0%)
adding: gettext/locale/nl_NL/ (stored 0%)
adding: gettext/locale/nl_NL/LC_MESSAGES/ (stored 0%)
adding: gettext/locale/nl_NL/LC_MESSAGES/messages.mo (deflated 33%)
adding: gettext/locale/nl_NL/LC_MESSAGES/messages.po (deflated 41%)
adding: gettext/locale/fr_FR/ (stored 0%)
adding: gettext/locale/fr_FR/LC_MESSAGES/ (stored 0%)
adding: gettext/locale/fr_FR/LC_MESSAGES/messages.mo (deflated 34%)
adding: gettext/locale/fr_FR/LC_MESSAGES/messages.po (deflated 42%)
adding: gettext/bench.php (deflated 40%)
adding: gettext/index.php (deflated 31%)
adding: gettext/filesystem.php (deflated 67%)
Je vérifie ce que vois "file"
ericc@predator:~/www$ file gettext.zip
gettext.zip: Zip archive data, at least v1.0 to extract c'est correct
Je change le nom du fichier en gettext.txt, normalement sous Windows cela suffit pour le planter!
ericc@predator:~/www$ mv gettext.zip gettext.txt
Je vérifie ce que vois "file"
ericc@predator:~/www$ file gettext.txt
gettext.txt: Zip archive data, at least v1.0 to extract
c'est toujours correct
J'archive en tar le même répertoire
ericc@predator:~/www$ tar -cf gettext.tar gettext/*
Je vérifie ce que vois "file"
ericc@predator:~/www$ file gettext.tar
gettext.tar: POSIX tar archive (GNU)
c'est correct
J'archive en tar et compresse en bzip2 le même répertoire mais je conserve l'extension .tar seulement (logiquement je devrais utiliser .tar.bz2)
ericc@predator:~/www$ tar -cjf gettext.tar gettext/*
Je vérifie ce que vois "file"
ericc@predator:~/www$ file gettext.tar
gettext.tar: bzip2 compressed data, block size = 900k
c'est correct
Je change le nom en 'toto' sans extension
ericc@predator:~/www$ mv gettext.tar toto
Je vérifie ce que vois "file"
ericc@predator:~/www$ file toto
toto: bzip2 compressed data, block size = 900k
c'est toujours correct
je décompresse toto
ericc@predator:~/www$ bunzip2 toto
bunzip2: Can't guess original name for toto -- using toto.out
bunzip ne sait pas retrouver le nom d'origine parce qu'il n'y a pas d'extension, alors il le renomme toto.out
Je vérifie ce que vois "file"
ericc@predator:~/www$ file toto.out
toto.out: POSIX tar archive (GNU)
c'est toujours correct, fichier .tar.bz2 à l'origine, si je décompresse le bzip2, le résultat est en tar
Sous Linux, les commandes et programmes ne s'occupe que très rarement du nom du fichier et de son extension qui peuvent être changés
Au lieu de cela, ils utilisent ce que l'on appelle le "File Magic Number" qui sont une série de quelques octets (4 si mes souvenirs sont exacts) qui se trouvent au début de chaque fichier et permettent d'identifier le contenu de celui-ci
ericc -
-
Pourquoi ?
Avec ces explications, tu n'y arrive toujours pas ?
vas y envois le fichier ...
ericc -
Bon, j'envoie ... je te file lien lien dés qu'il est prêt !
Juste :
tu dé-archive ...
tu ré-archive ..
Tu devrais trouver une difference, non pas dans le nombre d'octet, mais dans le fichier lui même ! -
et mon script pour mes modif ... mais tant qu'un vulgaire tar -c et tar -x marche pô!
#!/bin/bash
tar -xf Cx_u_161672.tar # extraction du contenu de Cx_u_161672.tar
rm -f Cx_u_161672.tar # effacement de Cx_u_161672.tar pour ne pas recompresser inutilement
tar -xf inforad.tgz # extraction de l'arborescence de inforad.tgz celui dans lequel il y a images et sons
rm -f inforad.tgz # efface l'ancien inforad.tgz pour ne pas recompresser inutilement
cp -f modif.wav usr/local/inforad/lib/sound/STARTUP.wav # remplacement du fichier son dans l'arborescence
find usr/ -type f -print0 | xargs -0 md5sum > inforad.md5 # calcul md5 du nouveau inforad.md5 avec le nouvel STARTUP.wav
tar -czf inforad.tgz usr/ # on compresse l'arborescence dans inforad.tar
rm -rf usr #efface l'arborescence usr/....
chaine=`md5sum inforad.tgz | cut -d" " -f1` # calcul md5 du nouvel inforad.tgz
var=${chaine}' *-'
echo ${var} > inforad.tgz.md5
tar -cf resultat/Cx_u_161672.tar *.* # compression Cx_u_161672.tar dans un repertoire resultat -
Est ce vraiment important d'avoir le même MD5 ?
Si oui pourquoi ?
Je dois dire que il y a peux de chance que tu retombe exactement sur le même MD5 !
car tar, en plus des fichiers, conserve un certain nombre d'information comme la date et l'heure, le owner du fichier et les droits (chmod)
Ton fichier :
ericc@predator:~/Test$ tar tvf Cx_u_161672.tar
-rw-r--r-- 0/0 43 2011-04-05 17:39 bash.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 bash.md5.sgn
-rw-r--r-- 0/0 366655 2011-04-05 17:39 bash.tgz
-rw-r--r-- 0/0 36 2011-04-05 17:39 bash.tgz.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 bash.tgz.md5.sgn
-rw-r--r-- 0/0 40 2011-04-05 17:39 build.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 build.md5.sgn
-rw-r--r-- 0/0 167 2011-04-05 17:39 build.tgz
-rw-r--r-- 0/0 36 2011-04-05 17:39 build.tgz.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 build.tgz.md5.sgn
-rw-r--r-- 0/0 46 2011-04-05 17:39 busybox.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 busybox.md5.sgn
-rw-r--r-- 0/0 400143 2011-04-05 17:39 busybox.tgz
-rw-r--r-- 0/0 36 2011-04-05 17:39 busybox.tgz.md5
-rw-r--r-- 0/0 256 2011-04-05 17:40 busybox.tgz.md5.sgn
Après "décompression", "re-compression" (ce n'est pas de la compression mais bon) :
ericc@predator:~/Test/marco$ tar tvf Cx_u_16672.tar
-rw-r--r-- ericc/ericc 43 2011-04-05 17:39 bash.md5
-rw-r--r-- ericc/ericc 256 2011-04-05 17:40 bash.md5.sgn
-rw-r--r-- ericc/ericc 366655 2011-04-05 17:39 bash.tgz
-rw-r--r-- ericc/ericc 36 2011-04-05 17:39 bash.tgz.md5
-rw-r--r-- ericc/ericc 256 2011-04-05 17:40 bash.tgz.md5.sgn
-rw-r--r-- ericc/ericc 40 2011-04-05 17:39 build.md5
-rw-r--r-- ericc/ericc 256 2011-04-05 17:40 build.md5.sgn
-rw-r--r-- ericc/ericc 167 2011-04-05 17:39 build.tgz
-rw-r--r-- ericc/ericc 36 2011-04-05 17:39 build.tgz.md5
-rw-r--r-- ericc/ericc 256 2011-04-05 17:40 build.tgz.md5.sgn
-rw-r--r-- ericc/ericc 46 2011-04-05 17:39 busybox.md5
-rw-r--r-- ericc/ericc 256 2011-04-05 17:40 busybox.md5.sgn
-rw-r--r-- ericc/ericc 400143 2011-04-05 17:39 busybox.tgz
-rw-r--r-- ericc/ericc 36 2011-04-05 17:39 busybox.tgz.md5
On voit déjà immédiatement que le owner de tout les fichiers à changer .... donc forcement le md5 va changé
De plus, il y a des algorithmes d'agrégations différents ...
je cherche dans la doc de tar pour voir si je trouve quelque chose
ericc -
J'ai cherché et testé pas mal de choses mais c'est quasiment mission impossible !!
De plus, je ne vois pas l’intérêt ...
Si tu change quelque chose dans le fichier, que tu remplace un .wav ou autre, alors nécessairement le md5 va changer et il n'y a qu'1 chance sur des milliers pour que tu puisse avoir le même hash
ericc -
ericc
J'ai cherché et testé pas mal de choses mais c'est quasiment mission impossible !!
De plus, je ne vois pas l’intérêt ...
Si tu change quelque chose dans le fichier, que tu remplace un .wav ou autre, alors nécessairement le md5 va changer et il n'y a qu'1 chance sur des milliers pour que tu puisse avoir le même hash
ericc
Salut ericc !!
Oui, j'ai bien pigé ... si je change un truc ... le md5 est plus le même ! heureusement !
Mais si tu change RIEN ! ........
Je fichier sert pour la mise a jour !
Tel quel, je le charge, ca marche !
Tel quel je de-archive, je re-archive ... ca marche pô ! ...gnéééééééé !!! -
comme je t'ai montré plus haut, dès que tu décompresse, les fichiers prennent ton login comme "owner"
Donc ils sont modifiés ... donc le md5 change
Il faut voir dans la doc de tar comment faire pour qu'il décompresse sans changer le owner !
J'ai déjà trouver l'option pour qu'il enregistre le n° d'utilisateur plutot que le nom :
'--numeric-owner'
voir doc :
et il n'y a pas de fichier md5 à la racine avec le package ?
si non, alors c'est probablement un soucis de "owner", le script qui fait la mise à jour se retrouve sans les droits pour modifier les fichiers (à mon avis)
ericc