Möchte man nun Script gesteuert diese ganzen rotiertierten Dateien zu einer Datei verketten muss man diese Dateiliste verkehrt herum abarbeiten und den Inhalt mit zcat bzw. cat in eine neue Datei verschieben.
Ein großes Problem hierbei ist das invertierte Durchlaufen der Dateien. Ein sortiertes ls bzw. die Verwendung von sort hilft hier nicht wirklich weiter.
Folgender kleiner Shell/Perl Schnippsel löst das Problem:
for log in $(ls -1 Datei* | perl -lne '{/\d+/;$s[$&]=$_}END{print while$_=pop@s}’); do
# was auch immer nun $log getan werden soll
done
Geht der Perl Code kürzer?
Mit dank an Paul Buetow für den Tipp dass man bei Perl’s while keine Klammern benötigt.
HTTP ermöglicht das Offenhalten einer Verbindung um später weitere Anfragen über den selben Socket zu schicken. Dies minimiert den Overhead eines ständigen Verbindungsauf/ab-baus.
Im Apache Webserver gibt es eine Konfigurationsanweisung MaxKeepAliveRequests die die maximale Anzahl von Anfragen für eine solche offen gehaltene Verbindung bestimmt. Setzt man den Wert Beispielsweise auf 10 können in dieser einen Verbindung nur 10 Anfragen gestartet werden, danach wird der Server die Verbindung trennen.
Soweit so gut.
Nun gibt es das HTTP Feature “Range” was teilweise Dateiübertragung ermöglicht. Es ist mit Range weiterhin möglich mehrere Teile einer Datei anzufragen.
Ein HTTP Header wie etwa “Range: bytes=0-1,1-2,3-4″ würde somit jeweils das erste, zweite und dritte Byte der angeforderten Datei liefern. Eine spezielle Syntax davon ist “0-” was in etwa bedeutet schicke ab Byte 0 (Dateianfang) alles bis zum Ende der Datei.
Interessant ist das in Apache diese Range Requests nicht als KeepAlive Requests gezählt werden. Das bedeutet das obiges Beispiel mit den drei Bytes nur als ein Request gezählt wird.
Nun kann man sich ein kleines Perlscript schustern was in etwa wie folgt aussieht:
Ein Kollege stellte mir heute morgen eine interessante EMail zu.
Ruft man im Browser eine x-beliebige Seite, die Bilder enthält, auf und fügt dann folgenden Javascript Code in der Adresszeile ein geschehen seltsame Dinge!
Wichtig ist das es eine Zeile ist, also am besten den folgenden Text in einen Editor kopieren und die Zeilenumbrüche entfernen.