Kuyruk işlemlerini destekleyen bir sıkıştırma formatı var mı?


12

tailEd olmayı destekleyen bir sıkıştırma formatı arıyorum . Yani son X sıkıştırılmamış baytı almak için dosyanın tamamını okumak zorunda değilsiniz. Bu bzip2, xz, lzma, vb. Formatlardan herhangi biriyle mümkün müdür?

Bir keresinde bunu yapabilen gzip kullanarak bir şey kodladım. Temelde gerçekten yüksek bir seviyede, yaptığı şey birlikte çoklu gzip blokları kedi oldu, o zaman dosyanın sonundan son blok başlayana kadar geriye doğru arayabilecek bir util vardı. Bu dosyalar standart gzip yardımcı programları tarafından tamamen okunabilir, ancak mevcut biraz daha standart bir şey umuyorum.

Bunun nihai amacı, sıkıştırılmış bir şekilde yazabildiğim ve daha sonra tailtüm şeyleri diskten veya ağdan okunmasını beklemek zorunda kalmadan (tam olarak yazılmamış olsa bile; yani akış) yapabileceğim günlük dosyaları içindir .

Yanıtlar:


5

gzip, esas olarak aynı olan --rsyncable bir seçeneğe sahiptir . Standart olmayan kısım, gzip-blok-farkında "ztail" yardımcı programı olacaktır, ancak zaten bununla ilgilenmişsiniz gibi görünüyor.


2
Tabii ki bu seçenek sizi -9 belirtseniz bile -0.5 sıkıştırma düzeyi gibi etkili bir şekilde sınırlar.
Eylül'de psusi

bunu destekleyen gzip sürümünü nereden alıyorsunuz? Bu bir noktada bir seçenek olsaydı, kaldırılmış gibi görünüyor.
Patrick

Debian tabanlı dağıtımlar var - bu Ubuntu 10.04'ten geliyor: root @ backup1: ~ # gzip -V gzip 1.3.12 root @ backup1: ~ # gzip -h | egrep rsync - rsyncable rsync dostu arşiv yap
the-wabbit

Görünüşe göre, bazı diğer dağıtım koruyucular (örneğin Fedora) yamaları da içeriyor gibi görünüyor. Ve burada eski bir gzip için bir yama var: samba.org/netfilter/diary/gzip.rsync.patch Gerçekten derlemeniz gerekiyorsa, hafif değişikliklerle daha yeni bir sürüm için geçerli olabilir.
the-wabbit

BTW, tartışmalar, sıkıştırma üzerindeki etkinin (% 2-3 içinde) oldukça önemsiz olduğunu göstermektedir, ancak belirli bir veri kümesi için kilometre değişebilir. Deflate gibi uyarlanabilir algoritmalarla "tailable" sıkıştırmaya ihtiyacınız varsa, algoritmayı şimdi ve sonra sıfırlamak için neredeyse hiç yol yoktur - elbette bu bir sıkıştırma verimliliği isabetine neden olacaktır.
wabbit

0

FWIW: Ben üzerine bir komut satırı aracı geliştirdik Zlib en zran.c kaynak kodu gzip dosyaları için dizin oluşturur: https://github.com/circulosmeos/gztool

-TSeçenek ile bir gzip dosyasının sürekli kuyruğunu yapabilir . Ya da sadece son içeriğin bir kuyruğu ve durdurmak, -t(Diğer birçok seçenek mevcuttur).

Bu eylemlerden herhangi biri için, bu eylemle gztoolaraya eklenmiş bir dizin dosyası oluşturacağını unutmayın .

Endeksler herhangi bir zamanda durdurulabilir ve daha sonra tekrar kullanılabilir ve / veya tamamlanabilir. Ve gztoolsadece dosyadaki herhangi bir yerden veri çıkarmak için komut verilebileceği gibi ve bu eylemle araya eklenmiş indeksi yaratacağından, onu kullanırken asla zaman kaybı olmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.