Bir komutta tar.xz oluşturun


159

.tar.xzBir komutta sıkıştırılmış bir arşiv oluşturmaya çalışıyorum . Bunun için özel sözdizimi nedir?

Denedim tar cf - file | xz file.tar.xzama işe yaramıyor.

Yanıtlar:


241

İçin -Jsıkıştırma seçeneğini kullanın xz. Ve unutmayın man tar:)

tar cfJ <archive.tar.xz> <files>

2015-08-10'u düzenleyin:

Eğer argümanlar geçiriyorsanız tar tire ile (eski: tar -cfkarşıt olarak tar cf), ardından -fseçenek geçen gelmelidir o dosya adını belirtir beri (sayesinde @ABB işaret için!). Bu durumda, komut şöyle görünür:

tar -cJf <archive.tar.xz> <files>

5
ekleyerek vkomuta anahtarlarına ( tar -cJvf) dosyaları arşive eklenen gösterileri ayrıntılı olmak.
Stuart Cardall

7
Siparişin kısa çizgiyle önemli olduğu göz önüne alındığında, siparişin her zaman önemli olduğunu varsaymak fve kısa çizgi olmadan bile sonuncuyu koymak muhtemelen en iyisidir .
mwfearnley

1
-E (--extended) gibi xz parametrelerini iletmek mümkün mü? Görünüşe göre varsayılan olarak genişletilmiş kullanmayacak.
chmike

3
tarmacOS'ta destekleniyor gibi görünüyor, -Jancak özellik man sayfasında verilmiyor. Buraya bakmalıydım. Rağmen onlar bölümünde XZ bahsetmek --options...
cbarrick

1
@chmike XZ_OPT ortam değişkenini kullanın. Örneğin XZ_OPT = "- 9e -T0".
Dzenly

50

Anahtar -Jyalnızca daha yeni sistemlerde çalışır. Evrensel komut:

.Tar.xz arşivi yapmak için

tar cf - directory/ | xz -z - > directory.tar.xz

açıklama

  1. tar cf - directorydizini / okur ve TAR biçimine koymaya başlar. Bu işlemin çıktısı standart çıktıda üretilir.

  2. | standart çıktıyı başka bir programın girişine bağlar ...

  3. ... olan da bu xz -z -. XZ, -zarşivi standart girişten ( -) sıkıştırmak ( ) için yapılandırılmıştır .

  4. Sen çıkışı yönlendirmek xziçin tar.xzdosyanın.


16
-filetildiğinde "dosyadan" anlamına gelmez xz. Bunun yerine kısadır --force( ayrıntılar için bkz. Xz (1) ) ve gerekmedikçe en iyi şekilde kullanılmaz.
Eliah Kagan

@EliahKagan Düzeltildi. Teşekkürler.
Wojciech Adam Koszek

2
Çok iş parçacıklı sıkıştırmayı kullanmak için -T0 seçeneği kullanılabilir:tar cf - directory/ | xz -z -T0 - > directory.tar.xz
oidualc

Diğer bir avantaj, sıkıştırma seviyesini veya komut satırında xz için başka bir seçeneği kolayca belirleyebilmenizdir. Örneğin, sıkıştırmayı hızlandırmak ve kullanabileceğiniz boyut hakkında -1 -T0veya -0 -T0seçenek olarak çok fazla umursamıyorsanız , genellikle size karşılaştırılabilir veya daha hızlı bir zamanda gzip'ten daha küçük bir dosya verirken, varsayılan -6oldukça yavaştır. gzip.
fgwaller

38

Boru modunu beğendiyseniz, bu en temiz çözümdür:

tar c some-dir | xz > some-dir.tar.xz

fDosyalarla ilgilenmek için seçeneği koymak ve ardından -dosyanın standart girdi olduğunu belirtmek için kullanmak gerekli değildir . Bunun için -zseçeneği belirtmek de gerekmez xz, çünkü varsayılan değerdir.

Bu çalışır gzipve bzip2çok:

tar c some-dir | gzip > some-dir.tar.gz

veya

tar c some-dir | bzip2 > some-dir.tar.bz2

Sıkıştırmanın açılması da oldukça basittir:

xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x

Yalnızca tararşiviniz varsa aşağıdakileri kullanabilirsiniz cat:

cat archive.tar | tar x

Yalnızca dosyaları listelemeniz gerekiyorsa, kullanın tar t.


8

Xz sıkıştırma seçeneklerini kullanma

Sıkıştırma seçeneklerini kullanmak istiyorsanız xzveya tarMacOS'ta kullanıyorsanız , muhtemelen tar -cJfsözdiziminden kaçınmak istersiniz .

Buna göre man xz, bunu yapmanın yolu:

tar cf - baz | xz -4e > baz.tar.xz

Çünkü Wojciech Adam Koszek'in formatını beğendim , ama bilgiyi değil:

  1. c belirtilen dosyalar için yeni bir arşiv oluşturur.
  2. fbir dizinden okur (en iyisi bunu ikinci koymak çünkü -cf! = -fc)
  3. - Standart Çıktıya çıkışlar
  4. | çıkışı bir sonraki komuta yönlendirir
  5. xz -4esıkıştırma seçeneği xzile çağırır -4e. (eşit -4 --extreme)
  6. > baz.tar.xz katranlı ve sıkıştırılmış dosyayı baz.tar.xz

nerede -4eolduğunu kendi sıkıştırma seçeneklerini kullanabilirsiniz. Sık sık kullanmak -kiçin --keeporijinal dosya ve -9gerçekten ağır sıkıştırma için. -zmanuel xzolarak zip olarak ayarlamak için, aksi takdirde yönlendirilmezse varsayılan olarak zipping olarak ayarlanır .

Sıkıştırmak ve untar'ı kaldırmak için

Rafael van Horn'u yankılandırmak , sıkıştırmasını açmak ve yıldızını kaldırmak için (aşağıdaki nota bakın):

xz -dc baz.tar.xz | tar x

Not: Rafael'in cevabından farklı olarak , xz -dcyerine kullanın catxz. Betikler için bunu kullanmanız durumunda dokümanlar bunu önerir. Kullanmak -dya da --decompresskullanmak yerine alışkanlık edinmek unxzen iyisidir. Ancak, gerekiyorsa, komut satırından bu komutları kullanmak iyi olur.


tar -cJfMacOS'ta sözdizimini kullanmamanın özel bir nedeni var mı? Sadece merak ediyorum, çünkü bunu şimdi yapıyordum ve çalışıyor gibi görünüyordu.
Lo-Tan

2
@ Lo-Tan Katranınız varsa çalışır. Ben kullanırken tar doğru sürümü yoktu bu yüzden benim için işe yaramadı. Ayrıca tar kullanırsanız yapamayacağınız xz sıkıştırma seçeneklerini de kullanmak istedim. Ayrıca, boru sözdizimini hatırlamam daha kolay, bu yüzden bunu kullanma eğilimindeyim. Ama her birine kendi
Connor

4

Bunu dene: tar -cf file.tar file-to-compress ; xz -z file.tar

Not:

  1. tar.gz ve tar.xz aynı değildir; xz daha iyi sıkıştırma sağlar.
  2. Pipo kullanmayın | çünkü bu komutları aynı anda çalıştırır. Komutları arka arkaya kullanmak ;veya &yürütmek.

+1 RHEL 5.10'da bir Jseçenek görmüyorum , ancak bu işe yarıyor. Sanırım RHEL6'ya ihtiyacınız var.
Brian

2
Çıkışı katrandan xz'ye borulamak için komutları neden ayarlamıyorsunuz?
mwfearnley

@mwfearnley Bence not sadece komutların sırayla yürütülmesi gerektiğini vurgulamaktır. Dosya adı her iki komutta da kullanıldığından, standart çıktı veya girdiden veri yazmaz veya okumaz. Komut dosya adını belirtmeden kullanılıyorsa, zincirleme yapılabilir tar -c file-to-compress | xz -z > file.tar.xz.
Jack Q

Kullanmak &bir komutu art arda başlatmaz. Bunun yerine, ilkini bir arka plan işlemi olarak başlatır.
Luis Lavaire
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.