Bonjour,
Je dispose d'un fichier de 70Mo contenant une liste de fichiers (log d'un backup)
-----------------------------------
/etc/host
/etc/passwd
...
-----------------------------------
Je dois rechercher rapidement (moins d'1s) dans ce fichier pour trouver si un fichier a bien été sauvegardé. Ca passe donc par la création d'un index et l'utilisation par la suite de cet index.
J'ai regardé le code source de locate, mais avant de réinventer la roue, je voudrais savoir si qqn ne connait pas un utilitaire léger permettant :
1° d'indexer mon fichier de log
2° de retrouver un fichier rapidement dans celui ci (à l'aide de regexp par exemple)
En gros ce que j'aimerais c'est une paire updatedb/locate pour le contenu de mon fichier.
Merci d'avance
# Une piste
Posté par dguihal . Évalué à 2.
Sinon, grep est trop long?
[^] # Re: Une piste
Posté par Damien Metzler . Évalué à 1.
# meuh
Posté par gc (site web personnel) . Évalué à 2.
avec un fichier de 80M ça bouffe 60M de mémoire :
[gc@meuh /tmp] perl -ne 'sub mem { open F, "/proc/self/status"; @foo = <F>; "@foo" =~ /VmRSS:(.*)/ and print "mem usage: $1\n"; }; BEGIN { mem() } chomp; $a{$_}++; END { mem(); print "number of files in index: ".int(keys %a)."\n"; while (<STDIN>) { chomp; print "was $_ present in file? -> "; print exists $a{$_}; print "\n"; } }' /tmp/log2
mem usage: 1444 kB
mem usage: 60444 kB
number of files in index: 495353
foo
was foo present in file? ->
/usr/bin
was /usr/bin present in file? -> 1
l'indexation prend environ 2,5 seconde, puis les réponses sont instantanées.
[^] # Re: meuh
Posté par Damien Metzler . Évalué à 1.
comme je l'ai dis, le top du top serait un mécanisme à la locate/updatedb....
# re: Recherche optimisée dans un fichier
Posté par Xavier FACQ . Évalué à 2.
Il y a une technique de recherche qui s'appelle la recherche dichotomique.
Je ne sais pas si elle sera adaptée à ton problème car ton fichier semble gros,
et deplus, il faut que le fichier de la recherche soit trié par noms par exemple.
Mais si cela peut orienter tes recherches, voici quelques explications:
http://www.chez.com/algor/dicho.htm
http://serge.mehl.free.fr/anx/rech_dichotom.html
a+
Xavier
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.