Perintah gzip Linux: kompres berkas dan pertahankan sumber

Perintah gzip mengompresi data berkas menjadi format .gz. Dalam pemakaian biasa dengan nama berkas, gzip mengganti sumber dengan berkas terkompresi; gunakan -k atau -c bila sumber harus tetap disimpan.

gzip tidak menggabungkan beberapa nama berkas dan struktur direktori menjadi satu arsip. Untuk mengemas banyak berkas dengan jalurnya, gunakan tar untuk membuat dan mengekstrak arsip, lalu gabungkan dengan kompresi gzip bila diperlukan.

Sintaks dan persiapan

gzip [opsi] [berkas ...]

opsi dan berkas adalah penanda. Contoh memakai GNU gzip; periksa gzip --version serta man gzip untuk pilihan pada lingkungan Anda. Siapkan report.log yang dapat dibaca, ruang untuk keluaran, dan direktori kerja yang benar.

Gunakan berkas percobaan jika baru mempelajari perilaku penggantian sumber. Periksa apakah report.log.gz atau nama keluaran lain sudah ada sebelum mengeksekusi perintah. Jangan memakai opsi pemaksaan penimpaan untuk mengatasi konflik nama tanpa mengetahui berkas mana yang akan diganti.

Mengompresi sambil mempertahankan sumber

gzip -k report.log

-k mempertahankan report.log dan membuat report.log.gz di sebelahnya. Setelah berhasil, kedua berkas diharapkan ada. Keluaran biasanya tidak menampilkan isi berkas; baca pesan galat dan periksa status proses untuk memastikan operasi selesai.

Tanpa -k atau -c, bentuk gzip report.log biasanya mengganti berkas asli dengan report.log.gz setelah kompresi berhasil. Karena itu, jangan mengasumsikan sumber selalu tetap ada. Keberadaan salinan terkompresi juga bukan pengganti versi cadangan bila sumber perlu dapat dipulihkan dari kesalahan sebelumnya.

Menyimpan hasil dengan nama lain

gzip -c report.log > report-copy.log.gz

-c mengirim data terkompresi ke keluaran standar tanpa mengganti report.log. Operator > milik shell menyimpan data itu sebagai report-copy.log.gz. Berkas .gz berisi data biner, sehingga jangan menganggap keluarannya teks laporan yang harus dicetak ke terminal.

Periksa nama tujuan sebelum memakai pengalihan: > dapat memotong berkas keluaran yang sudah ada. Jangan memilih report.log sendiri sebagai tujuan, karena shell dapat memotong sumber sebelum gzip membacanya. Gunakan nama berbeda seperti contoh dan pertahankan sumber sampai hasil diperiksa.

Menguji integritas data terkompresi

gzip -t report.log.gz

-t memeriksa aliran gzip tanpa menuliskan hasil dekompresi sebagai berkas baru. Jika tidak ada masalah, perintah biasanya selesai tanpa keluaran. Tetap periksa status keluar segera setelahnya; pada Bash, echo $? menampilkan status perintah terakhir.

Status 0 berarti berhasil, 1 menunjukkan galat, dan 2 menunjukkan peringatan pada GNU gzip. Periksa pesan terkait sebelum memutuskan langkah selanjutnya. Berkas terpotong atau rusak perlu dibandingkan dengan sumber atau salinan lain, bukan dianggap benar hanya karena memiliki ekstensi .gz.

Pemeriksaan ini bukan bukti identitas pengirim atau bahwa isi cocok dengan berkas sumber yang Anda maksud. Untuk data penting, dekompresi ke lokasi terpisah dan bandingkan isinya atau checksum, yaitu nilai ringkas isi berkas, dengan sumber yang benar. Kompresi gzip juga tidak mengenkripsi data.

Contoh kecil untuk memeriksa sumber yang tetap ada

printf 'hello\n' > note.txt
gzip -k note.txt
ls note.txt*

Jalankan dalam direktori percobaan yang belum berisi note.txt atau note.txt.gz. printf membuat teks hello diikuti baris baru. Setelah gzip -k, daftar berkas dapat ditampilkan seperti ilustrasi berikut:

note.txt  note.txt.gz

Keduanya ada: note.txt adalah sumber dan note.txt.gz hasil kompresi. Tata letak ls bergantung pada terminal dan pengaturannya; dua nama dapat muncul pada satu baris atau pada baris terpisah. Format tampilan tidak mengubah berkas yang dibuat.

Gunakan gzip -t note.txt.gz untuk memeriksa aliran terkompresinya. Jika ingin membandingkan isi, simpan hasil dekompresi dengan nama lain agar tidak menimpa note.txt. Hasil teks yang diharapkan tetap hello dan satu baris baru.

Opsi penting

Opsi Fungsi
-k Mempertahankan berkas masukan.
-c Menulis hasil ke keluaran standar.
-t Menguji integritas data terkompresi.
-1 ... -9 Memilih penekanan kecepatan atau tingkat kompresi.
-v Menampilkan informasi pemrosesan dan pengurangan ukuran.

-1 mengutamakan kompresi lebih cepat, sedangkan -9 mengutamakan kompresi lebih kuat dengan waktu lebih lama. Penghematan ukuran bergantung pada isi, bukan hanya angkanya. Berkas kecil atau data yang sudah terkompresi dapat hanya sedikit mengecil atau justru bertambah karena informasi format.

Jika membandingkan tingkat kompresi, gunakan masukan yang sama dan nama hasil berbeda, pertahankan sumber, lalu bandingkan ukuran serta waktu dengan kondisi yang sama. Jangan menggeneralisasi satu hasil pada semua jenis log, gambar, atau arsip.

Dekompresi dan banyak berkas

gzip -d berkas.gz melakukan dekompresi dan biasanya mengganti masukan .gz dengan hasilnya. -k dapat dipakai untuk mempertahankan masukan saat dekompresi; -c mengirim hasil ke keluaran standar. Pastikan nama hasil tidak berbenturan dengan sumber yang masih ada.

Misalnya, bentuk gzip -dc note.txt.gz > note-restored.txt mengembalikan data ke nama berbeda sambil mempertahankan berkas .gz. Jalankan hanya jika note-restored.txt memang belum ada atau boleh diganti, lalu bandingkan dengan note.txt.

Memberikan beberapa nama berkas pada pemakaian biasa gzip menghasilkan kompresi masing-masing berkas, bukan satu arsip dengan anggota yang dapat dipilih seperti tar. Penggabungan aliran terkompresi pun berbeda dari penyimpanan struktur direktori. Untuk direktori utuh dalam satu berkas, gunakan pola tar -czf backup.tar.gz directory/ setelah memeriksa sumber serta nama arsip tujuan.

Perilaku pilihan dijelaskan dalam manual GNU gzip yang diterbitkan Debian. Sesuaikan dengan bantuan dan versi yang terpasang pada sistem Anda.

FAQ

Dapatkah gzip membuat satu arsip direktori?

gzip mengompresi aliran data, bukan menyimpan kumpulan jalur direktori sebagai arsip. Gunakan tar bersama gzip, misalnya pola tar -czf, untuk tujuan itu.

Apakah gzip -t menjamin berkas berasal dari pengirim yang benar?

Tidak. Pemeriksaan integritas aliran terkompresi tidak mengautentikasi sumber atau membuktikan isinya adalah dokumen yang Anda harapkan. Verifikasi asal serta pembanding isi secara terpisah.