split d'un fichier et action sur les morceaux
Le
Kevin Denis
Bonjour,
j'ai quelques gros fichiers, et je souhaitais réduire leur taille en
conservant une signature unique pour les différencier. Une fonction
de hachage est donc la solution.
Pour quelques raisons trop longues à être évoquées ici, j'aurais
besoin de réduire le fichier et de le hacher, mais par morceau, i.e.
prendre le fichier par petit bout, faire un hash de chacun de ces morceaux,
et concaténer tous les hash. (pour donner une idée des ordres de
grandeurs, il s'agit de fichiers supérieurs au giga, et le résultat
devrait être un suite de hash de quelques Mo).
J'utilise donc split, puis sha256sum. Mais ceci à le défaut de
consommer beaucoup d'espace disque: le fichier est d'abord dupliqué
par le split, avant d'être hashé. Il n'existerait pas un moyen
de réunir les deux opérations? Apparement, la page de man de split
ne me propose rien de tel (un genre de -exec {} comme avec
find).
Merci
--
Kevin
j'ai quelques gros fichiers, et je souhaitais réduire leur taille en
conservant une signature unique pour les différencier. Une fonction
de hachage est donc la solution.
Pour quelques raisons trop longues à être évoquées ici, j'aurais
besoin de réduire le fichier et de le hacher, mais par morceau, i.e.
prendre le fichier par petit bout, faire un hash de chacun de ces morceaux,
et concaténer tous les hash. (pour donner une idée des ordres de
grandeurs, il s'agit de fichiers supérieurs au giga, et le résultat
devrait être un suite de hash de quelques Mo).
J'utilise donc split, puis sha256sum. Mais ceci à le défaut de
consommer beaucoup d'espace disque: le fichier est d'abord dupliqué
par le split, avant d'être hashé. Il n'existerait pas un moyen
de réunir les deux opérations? Apparement, la page de man de split
ne me propose rien de tel (un genre de -exec {} comme avec
find).
Merci
--
Kevin

Poser une question


J'utiliserais dd pour lire une section du fichier, et je piperais le
résultat à sha256sum, avec 3-4 lignes de script autour pour choisir les
bons arguments à dd et boucler. Je ne pense pas qu'il y ait de commande
magique pour résoudre le problème.
Attention à dd avec un pipe : si la taille de bloc n'est pas en phase avec
les lectures ou écritures du process à l'autre bout du pipe, dd peut faire
des blocs écourtés, et ne rattrapera pas les octets perdus.
Effectivement. Avec dd, cela devient bien plus simple.
--
Kevin
[...]
[...]
perl -ne 'BEGIN{$/485760}{open A, "|sha256sum"; print A $_; close A}'
--
Stephane
Bonjour Stéphane,
t'es pénible dés fois...
tu peux me faire la même avec 5 tâches en // ? :-)
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.