[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Logfiles splitten, Tool gesucht


On Sun, May 27, 2012 at 04:37:20PM +0200, Raphael Eiselstein wrote:
> ich hab hier ein System gefunden (FreeBSD), bei dem es seit ca 2 Jahren
> kein Logrotate gab, d.h. irgendwelche Access-Logs sind auf ca 5Mio
> Zeilen angewachsen.
> 
> Jetzt will ich die nachtraeglich splitten, fuer jeden Monat eine Datei.

Warum? Spricht was dagegen, das Ding maximal zu komprimieren und bis
zum Loeschzeitpunkt liegen zu lassen? Es ist doch beliebig
unwahrscheinlich, dass das wirklich mal jemand angucken wird.

> Ich koennte also ueber den Zeitraum iterieren und aus den grossen Dateien
> fuer jeden Monat alle Zeilen rausgreppen und in eine Monats-Datei
> schreiben. 
> 
> Finde ich nicht elegant, weil fuer jeden Monat jedes mal die ganze Datei
> durchsucht wird.

Fuer eine einmalige Aktion waere ich auch mit "uneffektiv" zufrieden.

> Gibt es irgendwas in der Form von Grep, was mit sowas in der Art tut:
> 
> $ < inputfile $tool Pattern1 Output1 Pattern2 Output2 ... 
> 
> ... und das ganze so, dass das inputfile nur einmal gelesen werden muss.

Im Zweifel vielleicht mit perl, das abhaengig von einem pattern-Match
in unterschiedliche Ausgabefiles schreibt?

Oder das File erstmal in viele kleine Teile aufspalten und dann nur
noch mit grep ueber die Teile ruebergehen, die einen Monatswechsel
beinhalten?

Vielleicht hilft auch das hier,
http://blog.ganneff.de/blog/2008/05/01/splitting-huge-mbox-files.html,
was eine aehnliche Aufgabe in ruby loest.

in perl waere das etwas wie

my $fh;
my $month="";
my $thismonth="";
while( <> ) {
  chomp;
  if( /(irgendwas was au den monat matched)/ ) {
    $thismonth=$1;
  }
  if( !defined $fh or $month<>$thismonth) {
    $month=$thismonth;
    close $fh;
    open $fh, ">$month";
  }
  print $fh $_;
}

(untested, die Idee kommt hoffentlich rueber)

Gruesse
Marc

-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Mannheim, Germany  |  lose things."    Winona Ryder | Fon: *49 621 31958061
Nordisch by Nature |  How to make an American Quilt | Fax: *49 621 31958062
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/