Katran kullanırken bzip2 blok boyutunu nasıl ayarlarsınız?


10

tarBir linux sunucusunu teybe yedeklemek için kullanıyorum . -jDosyayı sıkıştırmak için seçeneği kullanıyorum bzip2, ancak tar'dan bzip2 için blok boyutu seçeneklerini ayarlamanın bir yolunu göremiyorum. Varsayılan blok boyutu en iyi sıkıştırmayı sağlayan ancak en yavaş olan 900.000 bayttır. Ben sıkıştırma oranı hakkında rahatsız değil, bu yüzden bzip2 daha küçük bir blok boyutu ile daha hızlı çalıştırmak için arıyorum.


1
Sidenote: Son zamanlarda bzip2'den vazgeçtim. Lzma kullanıyorum (lzma, lzma-utils veya lzma-sdk paketinden, adınız dağıtımınıza bağlıdır.) Genellikle aynı CPU zamanı verildiğinde bzip2 ile aynı veya daha iyi sıkıştırır - ve dekompresyon söz konusu olduğunda bzip2'yi üfler uzakta.
Mihai Limbăşan

Yanıtlar:


9
export BZIP=--fast
tar cjf foo.tar.bz2 foo

Or boru üretimi tariçin bzip2.

Yine de bzip2 man sayfasından not almalısınız:

    -1 (veya - hızlı) ila -9 (veya --best)
              Sıkıştırırken blok boyutunu 100 k, 200 k .. 900 k olarak ayarlayın.
              Açma işlemi sırasında hiçbir etkisi yoktur. Aşağıdaki BELLEK YÖNETİMİ konusuna bakın.
              --Fast ve --best takma adları öncelikle GNU gzip uyumlu-
              ibility şablonu. Özellikle, --fast bazı şeyleri anlamlı kılmaz
              cantly daha hızlı. Ve --best sadece varsayılan davranışı seçer.

nasıl ihracat alternatifi kullanabilirsiniz BZIP = -9
Pol Hallen

4
tar -cjf dir.tar.bz2 --options bzip2:compression-level=9 path/to/dir/

Sistemimde (OSX El Capitan bsdtar 2.8.3) bu man sayfasında eksik (gzip: sıkıştırma seviyesi ve xz: sıkıştırma seviyesi listelenmiş olsa da), ancak test etmek seçeneği işe yarıyor.
steveayre

tar: unrecognized option '--options'
ZN13

2

bzip2 blok boyutları

bzip2bazı blok boyutu seçeneklerine sahiptir. Kılavuz sayfasından bzip2(1):

-1 (or --fast) to -9 (or --best)
       Set the block size to 100 k, 200 k ..  900 k when compressing.
       Has no effect when decompressing. See MEMORY MANAGEMENT below.
       The --fast and --best aliases are primarily for GNU gzip
       compatibility. In particular, --fast doesn't make things
       significantly faster. And --best merely selects the default
       behaviour.

Sıkıştırma oranı açısından daha az sıkıştırma ile daha hızlı sıkıştırma yapmak bzip2için, -1(veya --fast) seçeneğini kullanmak istiyorsunuz gibi görünüyor .

bzip2Kullanırken blok boyutunu ayarlamatar

Birkaç şekilde bzip2kullanırken blok boyutunu ayarlayabilirsiniz tar.

UNlX yolu

En sevdiğim yol, UNlX yolu, her aracı bağımsız olarak kullandığınız ve borularla birleştirdiğiniz bir yol.

$ tar --create [FILE...] | bzip2 -1 > [ARCHIVE].tar.bz2

Bunu ".tar ile tar-> oluştur -> bzip ile bzip2-> yaz " şeklinde okuyabilirsiniz [ARCHIVE].tar.bz2.

Çevre değişkeni

bzip2Ortam değişkeni ile seçenekler ayarlamak da mümkündür BZIP2. Kılavuz sayfasından bzip2(1):

bzip2 will read arguments from the environment variables BZIP2 and BZIP,
in that order, and will process them before any arguments read from the
command line. This gives a convenient way to supply default arguments.

Bunu kullanmak tariçin, örneğin şunları yapabilirsiniz:

$ BZIP2=-1 tar --create --bzip2 --file [ARCHIVE].tar.bz2 [FILE...]

Daha hızlı alternatifler

bzip2yavaş bir sıkıştırma algoritması kullanır. Hız konusunda endişeleriniz varsa, gzipveya tarafından kullanılanlar gibi alternatif algoritmaları araştırabilirsiniz lzop. Sıkıştırma araçlarını karşılaştıran güzel bir makale: https://aliver.wordpress.com/2010/06/22/huge-unix-file-compresser-shootout-with-tons-of-datagraphs/


Görünüşe göre, burada iyi bir cevap verecek bilgiye sahip olabilirsiniz, ancak lütfen okumayı düşünün İyi bir cevabı nasıl yazarım? yardım merkezimize girin ve ardından Cevabı gözden geçirin. Komutlarınız / Kodunuz / Ayarlarınız teknik olarak çözüm olabilir, ancak bazı açıklamalar hoş geldiniz. Şimdiden teşekkürler.
HBruijn

1

Gönder tarçıktı stdoutiçinden ve daha sonra boru o bzip2ayrı:

% tar cvf - _file_ | bzip2 _opts_ > output.tar.bz2

0

Daha da kolay:

% tar -cvf dir.tar path/to/dir/ && bzip2 -9 dir.tar

3
Geçici bir dosya kullanmak, yeterli sabit disk alanına, katranın yazabilmesi için bant genişliğine ve okumak için bzip2'ye ihtiyacınız olduğu anlamına gelir. Bu, küçük miktarlarda veri için önemsiz görünebilir, ancak söz konusu dizinde birkaç yüz gigabayt olduğunda, gerçek bir sorun haline gelebilir.
Ansgar Esztermann

Evet teşekkürler. Daha derine nedenini öğrenmiş biliyorum tarsahiptir -zve -j. Bu seçenekler benim için oldukça uygun görünüyordu. Ama günü kurtarabilirler.
Andreas Spindler
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.