Szukam formatu kompresji, który obsługuje tail
ed. Oznacza to, że nie musisz czytać całego pliku, aby uzyskać ostatnie X nieskompresowanych bajtów. Czy jest to możliwe w przypadku dowolnego z formatów takich jak bzip2, xz, lzma itp.?
Kiedyś zakodowałem coś przy użyciu gzip, który mógłby to zrobić. Zasadniczo na naprawdę wysokim poziomie, to, co zrobiło, to połączenie wielu bloków gzip razem, wtedy miałem taki użytek, który mógł wyszukiwać wstecz od końca pliku, aż do uruchomienia ostatniego bloku. Pliki te były w pełni czytelne przez standardowe narzędzia gzip, ale mam nadzieję, że jest coś bardziej znormalizowanego.
Ostatecznym celem tego są pliki dziennika, które mogę zapisać skompresowane, a następnie być w stanie tail
je uzyskać (nawet jeśli nie zostały w pełni zapisane, tj. Przesyłanie strumieniowe) bez konieczności oczekiwania na odczyt całego pliku z dysku lub sieci.
źródło
FWIW: Opracowałem narzędzie wiersza poleceń na kodzie źródłowym zran.c zlib, który tworzy indeksy dla plików gzip: https://github.com/circulosmeos/gztool
Może tworzyć ciągły ogon pliku gzip z
-T
opcją. Lub tylko ogon ostatniej zawartości i zatrzymaj, z-t
(Dostępnych jest wiele innych opcji).Zauważ, że dla każdej z tych akcji
gztool
utworzy plik indeksu przeplatany z tą akcją.Indeksy można przerwać w dowolnym momencie i ponownie wykorzystać i / lub uzupełnić później. I jak
gztool
można po prostu nakazać wyodrębnienie danych z dowolnego miejsca w pliku i utworzenie indeksu przeplatanego tą akcją, nigdy nie stracisz czasu podczas korzystania z niego.źródło