Bagaimana cara mengompres banyak file ke dalam arsip .xz?

10

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

Grafis Jauh
sumber

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.

Eliah Kagan
sumber
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.

heemayl
sumber
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.

Petualang
sumber
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