GNU katranı kullanıyorum. Dosyaları sıkıştırırken / açarken sıkıştırma türünü otomatik olarak algılayabilir. Ama bir arşivi stdin'den açmam gerekiyor ve sıkıştırma türü bilinmiyor. Ben katran bana doğru düşündüren verebilir ki fark ettim:
tar: Archive is compressed. Use -z option
Ama tar'ın bu argümanı girmemi istemeden otomatik olarak sıkıştırma seçeneğini kullanmasını istiyorum . Bunu nasıl yapabilirim? Neden tar sadece sıkıştırma türünü bildiği için sıkıştırmıyor?
Teşekkür ederim!
tar
hangi veri türüne sahip olduğunu bilmemesi stdin
ve sıkıştırılmış programı çağırmak için çok geç olmasıdır. Gzip, bzip2 ve diğerlerini destekler. Bu soruna geçici bir çözüm bulmak kolay değildir (verileri arabelleğe alması gerekir), bu yüzden size yeniden denemenizi söyler.
fork()
/ exec()
yöntem kullanamaz . Yardımcı program stdin
borudan okuyacaktı ve ilk 4K artık eksik olacaktı. Verileri okuduktan sonra tekrar boruya koymanın bir yolu yoktur.
cat buffer - | gunzip
. (Alternatif olarak, ekstra işlem ihtiyacını önlemek için tıkanmayan G / Ç kullanılabilir.)