Bagaimana cara mengompres banyak file ke dalam arsip .xz?


10

Saya ingin mengompres beberapa gambar menjadi arsip .xz. Bagaimana aku melakukan itu?

Jawaban:


10

Meskipun seperti yang dirinci oleh Zacharee1 dan oleh heemayl biasanya adalah apa yang ingin Anda lakukan, cara lain adalah dengan mem - pipkan data tar ke perintah:tar cJf archive files...xz

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

Karena Ubuntu tarmendukung Jopsi, cara alternatif ini secara khusus berguna ketika Anda ingin meneruskan opsi xz.

Dalam contoh ini, saya tar dan xzip beberapa file TIFF dengan tingkat kompresi ( -9ke xz) dan verbose tinggi ( vke tar, -vke xz):

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

Ini tentu saja dapat juga dilakukan dalam dua langkah yang terpisah secara eksplisit:

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

Kedua cara itu sebenarnya tidak setara dalam cara mereka beroperasi, meskipun .tar.xzfile yang mereka hasilkan pada akhirnya harus sama (dan dulu, ketika saya mengujinya).

  • Dalam pertama, keluaran dari taryaitu pipa ( |) ke masukan dari xz. xzmenerima data dari tarsegera, dan tidak ada file tar terkompresi menengah yang pernah dibuat. Ini untuk mengatakan bahwa cara pertama pada dasarnya setara dengantar cJf archive files... , kecuali untuk argumen tambahan yang diteruskan xz.
  • Dalam yang kedua, arsip tar yang tidak dikompresi dibuat oleh perintah pertama, kemudian dikompresi oleh xzdi perintah kedua. ( xzsecara otomatis menghapus file asli ketika selesai, kecuali dipanggil dengan -k/ --keep.)

Untuk bacaan lebih lanjut, lihat posting ini oleh Rafael van Horn dan the tardan xzmanual.


1
+1. Ini bagus ketika rasio kompresi yang lebih tinggi (atau beragam) diinginkan ..
— heemayl

2
Halo 2015! Cara lain Anda dapat mencapai berbagai tingkat kompresi menggunakan tar -Jadalah untuk menentukan variabel lingkungan XZ_OPT, membuat doa seperti:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
— Wug

2
@ Wug Itu ide yang bagus. Tampaknya bagi saya itu menjamin jawaban tersendiri. Apakah Anda bersedia memposting itu?
— Eliah Kagan

13

Gunakan tardengan -Jopsi:

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

tar digunakan untuk menggabungkan beberapa file menjadi satu (Arsip) dan kemudian kita perlu mengompres arsip menggunakan algoritma kompresi XZ.

Dari 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

Perhatikan juga bahwa images.tar.xzakan dibuat di direktori saat ini, jika Anda ingin menyimpannya gunakan di tempat lain /full/path/to/images.tar.xz.


memulai proses xzing beberapa PSD besar dan sejujurnya, arsip menawarkan beberapa kompresi besar! 400 MB + sekarang 200MB
— Grafis Jauh

1
great..although xzadalah yang paling lambat di antara xz, gzip, bzip2karena rasio kompresi yang lebih tinggi dibandingkan lambatnya others..the layak untuk kesepakatan dengan jika Anda ingin lebih kompresi ..
— heemayl

Total psds saya adalah, seperti, 600-900 MB total xD
— Grafis Jauh

Anda baik untuk pergi ....
— heemayl

beberapa kesalahan ._.
— Grafis Jauh

3

Gunakan perintah ini: tar cJf <archive.tar.xz> <files>. Pisahkan jalur file dengan spasi.


Anda memerlukan ini:-cfJ
— AB

1
@AB: Anda tidak perlu -di front..from man tar: A function letter need not be prefixed with ``-''..so tar cJfbenar-benar OK.
— heemayl

@ Heemayl Tapi sepertinya tidak berhasil. Saya mencobanya tanpa tanda '-', tetapi tar tidak selesai.
— AB

@ Heemayl Itulah yang saya pikirkan.
— TheWanderer

1
Perhatikan bahwa Anda harus tetap dengan jawaban pertama Anda tar cJf, yang akan memberi OP cara lain untuk melakukan ini karena jawaban saya sudah dibahas tar --cvJfpada awalnya ..
— heemayl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.