Perintah xz Linux: kompres berkas, simpan sumber, dan atur thread
Perintah xz mengompresi berkas ke format .xz dan secara bawaan menghapus sumber setelah kompresi berhasil. Gunakan -k untuk mempertahankan sumber atau -c untuk menyimpan hasil dengan nama terpisah melalui keluaran standar.
xz memproses setiap berkas secara terpisah. Untuk menyimpan kumpulan nama berkas dan struktur direktori dalam satu arsip, gabungkan dengan tar untuk pembuatan dan pemeriksaan arsip. Berkas .tar.xz merupakan arsip tar yang dikompresi dengan xz, bukan format arsip multianggota milik xz sendiri.
Sintaks dan persiapan berkas
xz [opsi] [berkas ...]
opsi dan berkas adalah penanda. Gunakan xz --version dan man xz untuk memeriksa versi serta pilihan yang tersedia. Siapkan database.sql di direktori percobaan, ruang penyimpanan yang cukup, dan tujuan yang belum ada. Berkas SQL adalah teks perintah Structured Query Language; contoh ini hanya mengompresi isi berkas, tidak terhubung ke basis data atau membuat cadangan basis data yang sedang berjalan.
Gunakan ekspor basis data yang sudah selesai ditulis atau berkas teks latihan sendiri. Jangan mengompresi satu-satunya salinan yang masih diperlukan tanpa opsi penjaga sumber. Contoh pertama membuat database.sql.xz, contoh kedua memakai nama berbeda, dan contoh ketiga menguji hasil contoh pertama.
Mengompresi dengan sumber tetap tersedia
xz -k database.sql
-k membuat database.sql.xz dan mempertahankan database.sql. Operasi yang berhasil biasanya tidak menampilkan pesan. Periksa status proses dan kedua berkas sebelum melanjutkan. Jika database.sql.xz sudah ada, xz menampilkan galat dan melewati berkas secara bawaan.
Tanpa -k atau -c, xz biasanya menghapus sumber setelah keluaran berhasil diselesaikan. Jangan memakai -f sekadar untuk menghilangkan galat benturan nama: opsi itu dapat menghapus keluaran yang sudah ada. Pilih direktori percobaan baru atau periksa salinan sebelumnya terlebih dahulu.
Menyimpan hasil dengan nama terpisah
xz -c database.sql > database-copy.sql.xz
-c mengirim data terkompresi ke keluaran standar dan mempertahankan database.sql. Shell menyimpan aliran biner itu sebagai database-copy.sql.xz melalui >. Pastikan nama tujuan baru atau memang boleh diganti.
Shell dapat mengosongkan tujuan sebelum xz berjalan. Perlindungan penimpaan bawaan xz tidak melindungi berkas yang dibuka oleh pengalihan shell. Jangan arahkan keluaran ke database.sql sendiri karena masukan dapat terpotong lebih dahulu. Periksa status proses jika terjadi galat; keluaran terpisah dapat kosong atau hanya memuat sebagian data.
Menguji integritas hasil kompresi
xz -t database.sql.xz
-t mencoba dekompresi dan membuang hasilnya, sehingga tidak membuat atau menghapus berkas. Aliran yang lolos pemeriksaan biasanya tidak mencetak pesan. Pada Bash, periksa echo $? segera setelah perintah ini: 0 berarti berhasil, 1 galat, dan 2 peringatan tanpa galat aktual.
Integritas aliran tidak membuktikan asal pengirim atau bahwa isinya adalah ekspor basis data yang Anda maksud. Untuk data penting, lakukan pemulihan percobaan dan cocokkan isi atau checksum, yaitu nilai ringkas isi berkas, dengan pembanding yang benar. Pertahankan cadangan terpisah.
Contoh lengkap beserta hasil yang diharapkan
Siapkan note.txt berisi teks pendek, misalnya hello diikuti satu baris baru. Pastikan note.txt.xz belum ada, lalu jalankan dari direktori yang sama:
xz -k note.txt
xz -t note.txt.xz
ls note.txt*
Dua perintah xz biasanya diam saat berhasil. ls menampilkan daftar nama yang cocok dengan pola note.txt*, misalnya:
note.txt note.txt.xz
Jarak dan susunan keluaran bergantung pada lingkungan. note.txt dipertahankan oleh -k. Blok ini berisi tiga perintah, sehingga status terakhir setelah seluruh blok berjalan adalah status ls. Jalankan satu per satu dan periksa status setiap operasi xz sebelum ls menggantinya; keberhasilan daftar nama tidak membuktikan pengujian sebelumnya berhasil.
Untuk memulihkan ke nama baru tanpa menghapus masukan, gunakan xz -dc note.txt.xz > restored-note.txt dengan tujuan yang belum ada. Setelah status 0, bandingkan melalui cmp note.txt restored-note.txt. cmp biasanya diam dengan status 0 bila isi identik; status 1 berarti berbeda. Jangan gunakan nama berkas .xz sendiri sebagai tujuan pengalihan.
Opsi kompresi dan jumlah thread
| Opsi | Fungsi dan pertimbangan |
|---|---|
-k |
Mempertahankan berkas masukan setelah pemrosesan. |
-c |
Mengirim hasil ke keluaran standar dan mempertahankan masukan. |
-t |
Menguji data terkompresi tanpa menyimpan hasil dekompresi. |
-0 ... -9 |
Memilih preset kompresi; bawaan adalah -6. Pertimbangkan waktu dan memori pada mesin pembuat maupun mesin pemulih. |
-T jumlah_thread |
Membatasi jumlah thread pekerja. -T1 memakai mode satu thread; -T0 memilih secara otomatis sesuai kemampuan sistem. |
Thread adalah unit pekerjaan yang dapat dijalankan paralel. Contohnya, xz -T2 -k database.sql meminta paling banyak dua thread. Jumlah yang benar-benar dipakai dapat lebih sedikit karena ukuran masukan atau batas memori. Jalankan pada direktori baru jika database.sql.xz sudah dibuat oleh contoh sebelumnya.
Pada xz 5.6.0 dan versi lebih baru, pemilihan thread bawaan adalah otomatis (-T0), sedangkan xz 5.4.x dan versi lebih lama memakai -T1. Jangan menyimpulkan jumlah thread dari perintah tanpa memeriksa versi dan pengaturan lingkungan. XZ_DEFAULTS dan XZ_OPT juga dapat memasukkan opsi bawaan.
Memilih tingkat kompresi dan lingkungan pemulihan
Tingkat tinggi seperti -9 dapat menambah kebutuhan memori dan waktu; hasilnya bergantung pada data. Tambahan -e mencoba memperbaiki rasio dengan lebih banyak waktu prosesor, tanpa menaikkan kebutuhan memori dekompresor karena -e itu sendiri. Tidak semua pekerjaan perlu memakai -9e.
Pengaturan kompresi turut menentukan memori yang dibutuhkan saat pemulihan. Jika berkas akan dibuka pada mesin terbatas, pertimbangkan kemampuan mesin itu sebelum memilih preset tinggi. Meminta lebih banyak thread juga tidak menjamin kecepatan meningkat pada berkas kecil. Kompresi tidak mengenkripsi isi, dan berkas sangat kecil atau sudah terkompresi dapat menjadi lebih besar.
Perbedaan .xz dan .tar.xz
tar -cJf data.tar.xz data/ menggabungkan direktori data/ ke arsip tar lalu mengompresinya dengan xz. Pastikan data/ sudah ada dan keluaran berada di luar direktori yang diarsipkan. Huruf J untuk xz berbeda dari j untuk bzip2.
Periksa anggota dengan tar -tJf data.tar.xz. Untuk ekstraksi, siapkan direktori restore/ yang kosong lalu gunakan tar -xJf data.tar.xz -C restore/. Anggota contoh berada di bawah restore/data/. Melepas xz saja menghasilkan .tar dan belum mengeluarkan anggota menjadi berkas terpisah.
FAQ
Apakah xz beberapa berkas membuat satu arsip?
Tidak. Dengan nama masukan biasa, setiap berkas diproses menjadi hasil .xz tersendiri. Gunakan tar bila membutuhkan satu arsip dengan nama anggota serta struktur direktori.
Mengapa kompresi kedua gagal meskipun memakai -k?
-k mempertahankan sumber, tetapi tidak mengizinkan penimpaan hasil yang sudah ada. Periksa database.sql.xz atau gunakan tujuan baru melalui -c tanpa menimpa data yang diperlukan.
Dokumentasi resmi
Rincian opsi, kebutuhan memori, pemilihan thread, dan status proses tersedia dalam manual resmi XZ Utils untuk perintah xz.




