Ich suche nach einem Komprimierungsformat, das das tail
Bearbeiten unterstützt . Das heißt, Sie müssen nicht die gesamte Datei lesen, um die letzten X unkomprimierten Bytes zu erhalten. Ist dies mit einem der Formate wie bzip2, xz, lzma usw. möglich?
Ich habe einmal etwas mit gzip codiert, das das kann. Im Grunde genommen bestand das Ergebnis darin, mehrere gzip-Blöcke zusammenzufassen, und dann hatte ich eine Funktion, die vom Ende der Datei bis zum Beginn des letzten Blocks rückwärts suchen konnte. Diese Dateien waren von den Standard-gzip-Dienstprogrammen vollständig lesbar, aber ich hoffe, dass es etwas standardisierteres gibt.
Der ultimative Zweck hierfür sind Protokolldateien, die ich komprimiert tail
ausgeben und dann in der Lage sein kann (auch wenn sie noch nicht vollständig geschrieben wurden, dh Streaming), ohne warten zu müssen, bis das Ganze von der Festplatte oder vom Netzwerk gelesen wurde.
quelle
FWIW: Ich habe ein Befehlszeilentool für den zran.c- Quellcode von zlib entwickelt, mit dem Indizes für gzip-Dateien erstellt werden: https://github.com/circulosmeos/gztool
Mit der
-T
Option kann ein fortlaufendes Ende einer gzip-Datei erstellt werden . Oder einfach nur einen Schwanz mit den letzten Inhalten und halt, mit-t
(; Viele andere Möglichkeiten vorhanden).Beachten Sie, dass für jede dieser Aktionen
gztool
eine mit dieser Aktion verschachtelte Indexdatei erstellt wird.Indizes können jederzeit unterbrochen und wiederverwendet und / oder später vervollständigt werden. Und da
gztool
nur der Befehl zum Extrahieren von Daten an einer beliebigen Stelle in der Datei ausgeführt werden kann und der mit dieser Aktion verschachtelte Index erstellt wird, geht bei der Verwendung keine Zeit verloren.quelle