Birden çok dosyayı bir .xz arşivine nasıl sıkıştırırım?


10

Birkaç resmi bir .xz arşivine sıkıştırmak istiyorum. Bunu nasıl yaparım?

Yanıtlar:


10

Her ne kadar olarak Zacharee1 tarafından ayrıntılı ve heemayl tarafından Yapmanız isteyeceğiniz şey genellikle, başka bir şekilde tekrar boru tarred verilere olduğunu komutu:tar cJf archive files...xz

tar c files... | xz > archive.tar.xz

Ubuntu'nun seçeneği tardesteklediği için J, bu alternatif yol, seçenekleri aktarmak istediğinizde özellikle yararlıdır xz.

Bu örnekte, yüksek düzeyde sıkıştırma ( -9to xz) ve ayrıntılı çıktı ( vto tar, -vto xz) ile bazı TIFF dosyalarını tar ve xzip :

ek@Io:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
  100 %       207.3 KiB / 290.0 KiB = 0.715

Bu, elbette, açıkça iki ayrı adımda da yapılabilir:

ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
  100 %       207.3 KiB / 290.0 KiB = 0.715

.tar.xzSonunda ürettikleri dosyalar aynı olmalı (ve test ettiğimde) olsa da, bu iki yol aslında nasıl çalıştıklarına eşdeğer değil .

  • İlk olarak, çıkış arasında tarIS borulu ( |kadar) girişi arasında xz. xzverileri tarhemen alır ve sıkıştırılmamış bir ara kat dosyası oluşturulmaz. Bu, iletilen ek argümanlar haricinde , ilk yolun esasen eşdeğer olduğu anlamınatar cJf archive files... gelir xz.
  • İkincisinde, ilk komut tarafından sıkıştırılmamış bir tar arşivi oluşturulur, ardından xzikinci komutta sıkıştırılır . ( / xzile çağrılmadığı sürece, orijinal dosyayı tamamlandığında otomatik olarak siler .)-k--keep

Daha fazla okumak için Rafael van Horn ve tarve xzmanpages'in bu yazısına bakın.


1
+ 1. daha yüksek (veya değişen) sıkıştırma oranı istendiğinde iyi bir
değerdir

2
Merhaba 2015! Kullanarak çeşitli sıkıştırma düzeylerini gerçekleştirmenin başka bir yolu tar -Jda ortam değişkenini belirtmek XZ_OPTve çağrıyı şöyle bir şey XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
yapmaktır

2
@Wug Bu mükemmel bir fikir. Bana öyle geliyor ki kendi ayrı cevabını garanti ediyor. Bunu göndermek ister misiniz?
Eliah Kagan

13

Kullanım tarile -Jseçeneği:

tar -cvJf images.tar.xz /directory/containing/images/*

tar birden çok dosyayı tek bir dosyada (Arşiv) birleştirmek için kullanılır ve sonra XZ sıkıştırma algoritmasını kullanarak arşivi sıkıştırmamız gerekir.

Gönderen man tar:

-c, --create
       create a new archive
-v, --verbose
       verbosely list files processed
-J, --xz

-f, --file ARCHIVE
       use archive file or device ARCHIVE

Ayrıca images.tar.xzbaşka bir yere kaydetmek istiyorsanız, geçerli dizinde oluşturulacağını unutmayın /full/path/to/images.tar.xz.


birkaç büyük PSD'leri xzing sürecine başladı ve dürüst olmak gerekirse, arşiv bazı büyük sıkıştırma sunuyor! 400 MB + şimdi 200MB
Uzak Grafikler

1
great..although xzarasındaki en yavaş olduğu xz, gzip, bzip2daha sıkıştırmayı isterseniz ile bağlı others..the yavaşlık daha da yüksek sıkıştırma oranına anlaşmaya değer ..
heemayl

Benim psds toplam, gibi, 600-900 MB toplam xD
Uzak Grafikler

gitmek için iyi ....
heemayl

bazı tür hata ._.
Uzak Grafikler

3

Bu komutu kullanın: tar cJf <archive.tar.xz> <files>. Dosya yollarını boşlukla ayırın.


gerekenler:-cfJ
AB

1
@AB: önde ihtiyacın yok .. -from man tar: A function letter need not be prefixed with ``-''.. tar cJfkesinlikle sorun yok.
heemayl

@heemayl Ama işe yaramıyor gibi görünüyor. '-' olmadan denedim, ancak katran tamamlanmadı.
AB

@heemayl Ben de öyle düşünmüştüm.
TheWanderer

1
İlk cevabınıza sadık kalmanız gerektiğini unutmayın tar cJf, bu tar --cvJf
OP'ye cevabımın
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.