Jawaban:
Gunakan -Jopsi 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 -cfsebagai lawan tar cf), maka -fopsi 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>
fterakhir, bahkan tanpa tanda hubung.
tarpada macOS tampaknya mendukung -Jtetapi fitur ini tidak diberikan di halaman manual. Harus mencarinya di sini. Meskipun mereka menyebutkan XZ di bagian tentang --options...
Switch -Jhanya 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 - directorymembaca 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 xzke tar.xzfile.
-ftidak 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 -T0atau -0 -T0sebagai opsi, yang biasanya masih memberi Anda file yang lebih kecil daripada gzip dalam waktu yang sebanding atau lebih cepat, sementara standarnya -6jauh 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 fopsi untuk menangani file dan kemudian menggunakan -untuk menentukan bahwa file adalah input standar. Ini juga tidak perlu untuk menentukan -zopsi untuk xz, karena itu default.
Ini bekerja dengan gzipdan bzip2juga:
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 tararsip, 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 tarpada MacOS, Anda mungkin ingin menghindari tar -cJfsintaksis.
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. fmembaca dari direktori (lebih baik menempatkan ini detik karena -cf! = -fc)- output ke Output Standar| output pipa ke perintah berikutnyaxz -4epanggilan xzdengan -4eopsi 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 -kuntuk --keepfile asli dan -9untuk kompresi benar-benar berat. -zuntuk secara manual diatur xzke 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 -dcsebagai ganti catxz. Dokumen merekomendasikan ini jika Anda menggunakan ini untuk skrip. Terbaik untuk memiliki kebiasaan menggunakan -datau --decompressbukannya unxzjuga. Namun, jika Anda harus, menggunakan perintah-perintah dari baris perintah baik-baik saja.
tar -cJfsintaks 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.Jopsi, 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.
vperintah switch (tar -cJvf) menjadi verbose menunjukkan file yang ditambahkan ke arsip.