Yanıtlar:
İçin -J
sı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 -cf
karşıt olarak tar cf
), ardından -f
seç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>
f
ve kısa çizgi olmadan bile sonuncuyu koymak muhtemelen en iyisidir .
tar
macOS'ta destekleniyor gibi görünüyor, -J
ancak özellik man sayfasında verilmiyor. Buraya bakmalıydım. Rağmen onlar bölümünde XZ bahsetmek --options
...
Anahtar -J
yalnı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
tar cf - directory
dizini / okur ve TAR biçimine koymaya başlar. Bu işlemin çıktısı standart çıktıda üretilir.
|
standart çıktıyı başka bir programın girişine bağlar ...
... olan da bu xz -z -
. XZ, -z
arşivi standart girişten ( -
) sıkıştırmak ( ) için yapılandırılmıştır .
Sen çıkışı yönlendirmek xz
için tar.xz
dosyanın.
-f
iletildiğ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.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
veya -0 -T0
seç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 -6
oldukça yavaştır. gzip.
Boru modunu beğendiyseniz, bu en temiz çözümdür:
tar c some-dir | xz > some-dir.tar.xz
f
Dosyalarla 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 -z
seçeneği belirtmek de gerekmez xz
, çünkü varsayılan değerdir.
Bu çalışır gzip
ve 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 tar
arşiviniz varsa aşağıdakileri kullanabilirsiniz cat
:
cat archive.tar | tar x
Yalnızca dosyaları listelemeniz gerekiyorsa, kullanın tar t
.
Sıkıştırma seçeneklerini kullanmak istiyorsanız xz
veya tar
MacOS'ta kullanıyorsanız , muhtemelen tar -cJf
sö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:
c
belirtilen dosyalar için yeni bir arşiv oluşturur. f
bir dizinden okur (en iyisi bunu ikinci koymak çünkü -cf
! = -fc
)-
Standart Çıktıya çıkışlar|
çıkışı bir sonraki komuta yönlendirirxz -4e
sıkıştırma seçeneği xz
ile çağırır -4e
. (eşit -4
--extreme
)> baz.tar.xz
katranlı ve sıkıştırılmış dosyayı baz.tar.xz
nerede -4e
olduğunu kendi sıkıştırma seçeneklerini kullanabilirsiniz. Sık sık kullanmak -k
için --keep
orijinal dosya ve -9
gerçekten ağır sıkıştırma için. -z
manuel xz
olarak zip olarak ayarlamak için, aksi takdirde yönlendirilmezse varsayılan olarak zipping olarak ayarlanır .
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 -dc
yerine kullanın catxz
. Betikler için bunu kullanmanız durumunda dokümanlar bunu önerir. Kullanmak -d
ya da --decompress
kullanmak yerine alışkanlık edinmek unxz
en iyisidir. Ancak, gerekiyorsa, komut satırından bu komutları kullanmak iyi olur.
tar -cJf
MacOS'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.
Bunu dene: tar -cf file.tar file-to-compress ; xz -z file.tar
Not:
|
çünkü bu komutları aynı anda çalıştırır. Komutları arka arkaya kullanmak ;
veya &
yürütmek.J
seçenek görmüyorum , ancak bu işe yarıyor. Sanırım RHEL6'ya ihtiyacınız var.
tar -c file-to-compress | xz -z > file.tar.xz
.
&
bir komutu art arda başlatmaz. Bunun yerine, ilkini bir arka plan işlemi olarak başlatır.
v
komuta anahtarlarına (tar -cJvf
) dosyaları arşive eklenen gösterileri ayrıntılı olmak.