Jawaban:
Gunakan -J
opsi kompresi untuk xz
. Dan ingat untuk man tar
:)
tar cfJ <archive.tar.xz> <files>
Edit 2015-08-10:
Jika Anda meneruskan argumen ke tar
dengan tanda hubung (mis: tar -cf
sebagai lawan tar cf
), maka -f
opsi harus datang terakhir , karena itu menentukan nama file (terima kasih kepada @ABB untuk menunjukkannya!). Dalam hal ini, perintahnya terlihat seperti:
tar -cJf <archive.tar.xz> <files>
f
terakhir, bahkan tanpa tanda hubung.
tar
pada macOS tampaknya mendukung -J
tetapi fitur ini tidak diberikan di halaman manual. Harus mencarinya di sini. Meskipun mereka menyebutkan XZ di bagian tentang --options
...
Switch -J
hanya berfungsi pada sistem yang lebih baru. Perintah universal adalah:
Untuk membuat arsip .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Penjelasan
tar cf - directory
membaca direktori / dan mulai meletakkannya ke format TAR. Output dari operasi ini dihasilkan pada output standar.
|
menyalurkan output standar ke input program lain ...
... yang kebetulan terjadi xz -z -
. XZ dikonfigurasi untuk mengompresi ( -z
) arsip dari input standar ( -
).
Anda mengarahkan output dari xz
ke tar.xz
file.
-f
tidak berarti "dari file" saat diteruskan ke xz
. Sebaliknya itu adalah kependekan dari --force
(lihat xz (1) untuk detailnya), dan paling baik tidak digunakan kecuali diperlukan.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0
atau -0 -T0
sebagai opsi, yang biasanya masih memberi Anda file yang lebih kecil daripada gzip dalam waktu yang sebanding atau lebih cepat, sementara standarnya -6
jauh lebih lambat dari gzip.
Jika Anda menyukai mode pipa, ini adalah solusi paling bersih:
tar c some-dir | xz > some-dir.tar.xz
Tidak perlu menempatkan f
opsi untuk menangani file dan kemudian menggunakan -
untuk menentukan bahwa file adalah input standar. Ini juga tidak perlu untuk menentukan -z
opsi untuk xz
, karena itu default.
Ini bekerja dengan gzip
dan bzip2
juga:
tar c some-dir | gzip > some-dir.tar.gz
atau
tar c some-dir | bzip2 > some-dir.tar.bz2
Dekompresi juga cukup mudah:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Jika Anda hanya memiliki tar
arsip, Anda dapat menggunakan cat
:
cat archive.tar | tar x
Jika Anda hanya perlu mendaftarkan file, gunakan tar t
.
Jika Anda ingin menggunakan opsi kompresi untuk xz
, atau jika Anda menggunakan tar
pada MacOS, Anda mungkin ingin menghindari tar -cJf
sintaksis.
Menurut man xz
, cara untuk melakukan ini adalah:
tar cf - baz | xz -4e > baz.tar.xz
Karena saya suka format Wojciech Adam Koszek , tetapi tidak informasi:
c
membuat arsip baru untuk file yang ditentukan. f
membaca dari direktori (lebih baik menempatkan ini detik karena -cf
! = -fc
)-
output ke Output Standar|
output pipa ke perintah berikutnyaxz -4e
panggilan xz
dengan -4e
opsi kompresi. (sama dengan -4
--extreme
)> baz.tar.xz
mengarahkan file tar dan terkompresi ke baz.tar.xz
di mana -4e
, gunakan opsi kompresi Anda sendiri. Saya sering menggunakan -k
untuk --keep
file asli dan -9
untuk kompresi benar-benar berat. -z
untuk secara manual diatur xz
ke zip, meskipun default untuk zip jika tidak diarahkan.
Untuk menggemakan Rafael van Horn , untuk membuka kompresi & untar (lihat catatan di bawah):
xz -dc baz.tar.xz | tar x
Catatan: tidak seperti jawaban Rafael , gunakan xz -dc
sebagai ganti catxz
. Dokumen merekomendasikan ini jika Anda menggunakan ini untuk skrip. Terbaik untuk memiliki kebiasaan menggunakan -d
atau --decompress
bukannya unxz
juga. Namun, jika Anda harus, menggunakan perintah-perintah dari baris perintah baik-baik saja.
tar -cJf
sintaks pada MacOS? Hanya ingin tahu, karena saya baru saja melakukan itu dan sepertinya berhasil.
Coba ini: tar -cf file.tar file-to-compress ; xz -z file.tar
catatan:
|
karena ini menjalankan perintah secara bersamaan. Menggunakan ;
atau &
mengeksekusi perintah satu demi satu.J
opsi, tetapi ini berfungsi. Saya pikir Anda membutuhkan RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz
.
&
tidak akan meluncurkan perintah satu demi satu. Sebagai gantinya, itu akan meluncurkan yang pertama sebagai proses latar belakang.
v
perintah switch (tar -cJvf
) menjadi verbose menunjukkan file yang ditambahkan ke arsip.