gzip: kompres file di Linux, ekstrak gzip, serta cara memakai gunzip dan zcat
gzip adalah perintah Linux untuk mengompres satu file menjadi file .gz; untuk mengekstraknya, tambahkan -d pada perintah yang sama atau gunakan gunzip. Di server AlmaLinux 9, log akses berukuran 31.878 byte menyusut menjadi 4.424 byte, dan setelah diekstrak ukuran serta waktu modifikasi aslinya kembali seperti semula.
Output di bawah berasal dari folder uji di server AlmaLinux 9.8 yang dijalankan dengan akun root, dan waktunya dalam UTC. Log akses, catatan, dan file konfigurasi adalah file contoh yang dibuat untuk pengujian, dan alamat IP di log juga nilai contoh untuk dokumentasi.
1️⃣ Cara memakai perintah gzip
Folder uji berisi dua log akses, dua file catatan, folder config berisi file konfigurasi, dan folder restore yang kosong.
ls -ltotal 88
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log
-rw-r--r-- 1 root root 47748 Oct 27 23:59 access.log-20261027
drwxr-xr-x 2 root root 39 Oct 29 00:19 config
-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
drwxr-xr-x 2 root root 6 Oct 29 00:19 restoreJika Anda menulis nama file setelah gzip, file itu berubah menjadi file terkompresi dengan .gz di akhir namanya. Perintah di bawah mengompres access.log dan tidak menampilkan apa pun setelah selesai.
gzip access.logSetelah dikompres, ls -l tidak lagi menampilkan access.log, hanya access.log.gz. Log berukuran 31.878 byte menjadi 4.424 byte, dan waktu modifikasinya tetap sama dengan file asli.
ls -l access.log access.log.gzls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gzDengan -v, gzip menampilkan persentase pengurangan dan nama file baru untuk setiap file. [81.5%] di baris readme.txt adalah besarnya pengurangan dari ukuran asli, dan [replaced with] berarti file asli sudah diganti dengan file .gz.
gzip -v readme.txtreadme.txt: 81.5% -- replaced with readme.txt.gzUntuk menyimpan file asli, tambahkan -k. Jika memo.txt dikompres dengan -k, memo.txt dan memo.txt.gz tetap ada berdampingan.
gzip -k memo.txtls -l memo.txt memo.txt.gz-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzmemo.txt yang berukuran 45 byte justru membesar menjadi 71 byte setelah dikompres. Menurut manual resmi, gzip tetap mengompres meskipun hasilnya lebih besar dari aslinya, dan menyimpan nama serta waktu file asli di dalam file terkompresi.
Jika Anda menulis beberapa file sekaligus, setiap file mendapat file .gz sendiri. Mengompres dua file konfigurasi di folder config menghasilkan dua file, app.conf.gz dan site.conf.gz.
gzip -v config/app.conf config/site.confconfig/app.conf: 78.7% -- replaced with config/app.conf.gz
config/site.conf: 87.7% -- replaced with config/site.conf.gzls -l config/total 8
-rw-r--r-- 1 root root 206 Oct 20 11:00 app.conf.gz
-rw-r--r-- 1 root root 93 Oct 20 11:05 site.conf.gz2️⃣ Ekstrak gzip
Saat access.log.gz diekstrak dengan -d, tidak ada output, access.log muncul kembali, dan access.log.gz tidak tersisa.
gzip -d access.log.gzls -l access.log access.log.gzls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.logaccess.log yang kembali berukuran 31.878 byte, dan waktu modifikasinya sama seperti sebelum dikompres, yaitu Oct 28 23:50.
gunzip melakukan hal yang sama dengan gzip -d. Jika ditambah -k, gunzip mengekstrak sambil menyimpan file terkompresi, dan [created] di baris -v berarti file baru dibuat tanpa menghapus file .gz.
gunzip -kv readme.txt.gzreadme.txt.gz: 81.5% -- created readme.txtls -l readme.txt readme.txt.gz-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
-rw-r--r-- 1 root root 108 Oct 27 09:10 readme.txt.gzgzip tidak punya opsi untuk menentukan folder tujuan, jadi untuk mengekstrak ke folder lain, kirim isi yang diekstrak ke output standar dengan -c lalu tulis path file baru setelah [>]. Perintah di bawah mengekstrak memo.txt.gz menjadi memo.txt di folder restore.
gzip -dc memo.txt.gz > restore/memo.txtls -l restore/total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txtSaat diekstrak dengan -c, memo.txt.gz tetap ada. Waktu modifikasi restore/memo.txt yang baru adalah Oct 29 00:19, saat file itu dibuat.
3️⃣ Opsi perintah gzip
-l menampilkan dalam satu baris, tanpa mengekstrak, ukuran terkompresi, ukuran asli, persentase pengurangan, dan nama file setelah diekstrak. Setelah access.log dikompres lagi dengan -k lalu diperiksa dengan -l, hasilnya seperti di bawah.
gzip -k access.loggzip -l access.log.gz compressed uncompressed ratio uncompressed_name
4424 31878 86.2% access.logJika ditambah -v, di depannya muncul metode kompresi (defla, singkatan dari deflate), CRC data asli, serta tanggal dan waktu file asli.
gzip -lv access.log.gzmethod crc date time compressed uncompressed ratio uncompressed_name
defla b49b41c4 Oct 28 23:50 4424 31878 86.2% access.log-t hanya memeriksa apakah file terkompresi rusak atau tidak, lalu selesai. Jika dipakai bersama -v, [OK] muncul setelah setiap file yang tidak bermasalah.
gzip -tv access.log.gzaccess.log.gz: OKAngka -1 sampai -9 adalah tingkat kompresi, dan menurut manual resmi nilai bawaannya -6. access.log yang sama dikompres tiga kali dengan -c, lalu ukurannya dibandingkan dengan wc -c.
gzip -c -1 access.log | wc -c5564gzip -c -6 access.log | wc -c4424gzip -c -9 access.log | wc -c4164| Tingkat kompresi | Ukuran .gz | Dibanding ukuran asli |
|---|---|---|
| File asli (access.log) | 31.878 byte | 100% |
| -1 (tercepat) | 5.564 byte | 17.5% |
| -6 (bawaan) | 4.424 byte | 13.9% |
| -9 (terkecil) | 4.164 byte | 13.1% |
-9 lebih kecil 260 byte dari bawaan, dan -1 lebih besar 1.140 byte dari bawaan.
Jika Anda hanya menulis nama folder, muncul [is a directory -- ignored] dan folder itu dilewati.
gunzip configgzip: config is a directory -- ignoredUntuk memproses semua file di dalam folder, tambahkan -r. Saat folder config, tempat dua file konfigurasi tadi dikompres, diekstrak dengan gunzip -r, kedua file diekstrak satu per satu.
gunzip -rv configconfig/app.conf.gz: 78.7% -- replaced with config/app.conf
config/site.conf.gz: 87.7% -- replaced with config/site.confls -l config/total 8
-rw-r--r-- 1 root root 840 Oct 20 11:00 app.conf
-rw-r--r-- 1 root root 528 Oct 20 11:05 site.conf-r mengompres atau mengekstrak file di dalam folder satu per satu dan tidak menggabungkan beberapa file menjadi satu. Untuk menjadikan sebuah folder satu file terkompresi, gunakan perintah tar untuk menggabungkan sekaligus mengompresnya. Jika folder config dikompres dengan tar -czf, folder dan kedua file masuk ke dalam satu config.tar.gz.
tar -czf config.tar.gz configtar -tzvf config.tar.gzdrwxr-xr-x root/root 0 2026-10-29 00:19 config/
-rw-r--r-- root/root 840 2026-10-20 11:00 config/app.conf
-rw-r--r-- root/root 528 2026-10-20 11:05 config/site.conf📌 Opsi utama: hasil dari artikel ini
| Opsi | Fungsi | Hasil di artikel ini | |
|---|---|---|---|
| -c | Mengirim hasil ke output standar dan membiarkan file asli apa adanya | Output -dc yang dialihkan ke restore/memo.txt membuat memo.txt berukuran 45 byte | |
| -d | Ekstrak (sama dengan gunzip) | access.log.gz hilang dan access.log berukuran 31878 byte kembali | |
| -k | Menyimpan file asli setelah dikompres atau diekstrak | memo.txt (45 byte) dan memo.txt.gz (71 byte) tetap ada berdampingan | |
| -v | Menampilkan persentase pengurangan dan nama file baru untuk setiap file | readme.txt: 81.5% -- replaced with readme.txt.gz | |
| -l | Menampilkan daftar ukuran, persentase, dan nama setelah diekstrak dari file terkompresi | Ukuran terkompresi 4424, ukuran asli 31878, persentase 86.2%, nama access.log | |
| -t | Memeriksa apakah file terkompresi rusak atau tidak | Dengan -tv, access.log.gz: OK, dan broken.gz yang ujungnya terpotong menghasilkan unexpected end of file | |
| -r | Mengompres atau mengekstrak semua file di dalam folder | Satu kali gunzip -rv config mengekstrak config/app.conf.gz dan config/site.conf.gz | |
| -f | Menimpa tanpa bertanya meskipun ada file dengan nama yang sama | Ditimpa tanpa pertanyaan: memo.txt tidak ada, hanya tersisa memo.txt.gz (71 byte) | |
| -1 ~ -9 | Tingkat kompresi (-1 tercepat, -9 terkecil, bawaan -6) | Output yang dikompres dengan -1, -6, dan -9 dihitung dengan wc -c: 5564, 4424, 4164 |
📎 Opsi lainnya: menurut manual resmi
| Opsi | Fungsi | |
|---|---|---|
| -N | Saat mengompres menyimpan nama dan waktu file asli (bawaan saat kompres), dan saat mengekstrak memulihkan nama dan waktu yang tersimpan | |
| -n | Saat mengompres tidak menyimpan nama dan waktu file asli, dan saat mengekstrak memakai nama tanpa .gz (bawaan saat ekstrak) | |
| -q | Tidak menampilkan peringatan apa pun | |
| -S akhiran | Mengompres dengan akhiran yang ditentukan sebagai ganti .gz, dan saat mengekstrak mencari akhiran itu lebih dulu | |
| --rsyncable | Mengompres agar hanya bagian yang berubah yang dikirim saat menyinkronkan file terkompresi dengan server lain melalui rsync |
🔲 Simulator perintah gzip
Di simulator di bawah, Anda bisa mengetik sendiri perintah untuk mengompres dengan gzip, mengekstrak, dan melihat isi dengan zcat dan zgrep.
4️⃣ Melihat isi file gzip
Log lama yang disimpan dengan tanggal di namanya memakan lebih sedikit ruang jika dikompres dengan gzip. Perintah di bawah mengompres access.log-20261027, log dari hari sebelumnya.
gzip access.log-20261027Log terkompresi bisa ditampilkan ke layar dengan zcat tanpa diekstrak. zcat sama dengan gunzip -c (menurut manual resmi), sehingga file .gz tetap ada.
zcat access.log-20261027.gz | head -3192.0.2.50 - - [27/Oct/2026:00:00:00 +0000] GET / HTTP/1.1 200 15929
192.0.2.54 - - [27/Oct/2026:00:00:07 +0000] GET / HTTP/1.1 200 17699
192.0.2.4 - - [27/Oct/2026:00:00:14 +0000] GET / HTTP/1.1 200 13813Output zcat bisa diteruskan ke perintah lain lewat pipe, dan jika dihitung dengan wc -l, log ini berisi 600 baris.
zcat access.log-20261027.gz | wc -l600Untuk mencari teks tertentu di log terkompresi, gunakan zgrep. Dengan -c, yang muncul hanya jumlah baris yang berisi [ 404 ]; untuk melihat isi barisnya, jalankan tanpa -c.
zgrep -c ' 404 ' access.log-20261027.gz37zgrep ' 404 ' access.log-20261027.gz | head -3192.0.2.23 - - [27/Oct/2026:00:02:06 +0000] GET /old-page-6/ HTTP/1.1 404 229
192.0.2.38 - - [27/Oct/2026:00:04:40 +0000] GET /old-page-2/ HTTP/1.1 404 217
192.0.2.22 - - [27/Oct/2026:00:07:42 +0000] GET /old-page-6/ HTTP/1.1 404 414Jika zcat menerima file yang tidak terkompresi, zcat menampilkan [not in gzip format] lalu berhenti.
zcat access.log | head -1
gzip: access.log: not in gzip formatzgrep juga membaca file yang tidak terkompresi apa adanya, jadi Anda bisa mencari di log yang sedang dipakai dan log lama yang sudah dikompres sekaligus. Jika Anda menulis dua file atau lebih, nama file muncul di depan jumlah baris.
zgrep -c wp-login.php access.log access.log-20261027.gzaccess.log:36
access.log-20261027.gz:525️⃣ Error gzip
Jika file yang sudah berakhiran .gz dikompres lagi, muncul [already has .gz suffix -- unchanged] dan file tetap seperti semula.
gzip access.log.gzgzip: access.log.gz already has .gz suffix -- unchangedSebaliknya, jika file yang tidak berakhiran .gz diekstrak dengan -d, muncul [unknown suffix -- ignored].
gzip -d memo.txtgzip: memo.txt: unknown suffix -- ignoredFile yang hanya bernama .gz tetapi tidak dikompres dengan gzip berakhir dengan [not in gzip format]. Pesan ini muncul saat file teks memo.txt disalin dengan nama notgzip.gz lalu diekstrak.
cp memo.txt notgzip.gzgzip -d notgzip.gz
gzip: notgzip.gz: not in gzip formatFile .gz yang ujungnya terpotong, misalnya karena unduhan terputus, berakhir dengan [unexpected end of file]. Ini hasil pemeriksaan dengan -t pada broken.gz, yang hanya menyimpan 2.000 byte pertama dari log lama yang dikompres.
head -c 2000 access.log-20261027.gz > broken.gzgzip -t broken.gz
gzip: broken.gz: unexpected end of fileBahkan dari file yang terpotong, zcat bisa mengeluarkan isi sampai titik potongnya. Dari log 600 baris, 162 baris tersisa di restore/broken.log, dan manual resmi juga menyarankan menyelamatkan bagian awal file terkompresi yang rusak dengan zcat.
zcat broken.gz > restore/broken.logwc -l restore/broken.log
gzip: broken.gz: unexpected end of file
162 restore/broken.logJika sudah ada file dengan nama yang sama dengan file .gz yang akan dibuat, gzip bertanya apakah file itu akan ditimpa. Jika Anda mengetik n, perintah selesai dengan [not overwritten] tanpa mengubah apa pun.
gzip memo.txtgzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
not overwrittenDengan -f, gzip langsung menimpa tanpa bertanya. Karena -k tidak ditambahkan, memo.txt hilang dan hanya memo.txt.gz yang tersisa.
gzip -f memo.txtls -l memo.txt memo.txt.gzls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzPesan error yang muncul saat menangani kompresi dan hal yang perlu diperiksa berikutnya adalah sebagai berikut.
| Output | Arti | Yang perlu diperiksa berikutnya |
|---|---|---|
| already has .gz suffix -- unchanged | File sudah berakhiran .gz sehingga tidak dikompres lagi | Apakah nama file asli yang akan dikompres sudah ditulis |
| unknown suffix -- ignored | Mencoba mengekstrak file yang tidak berakhiran .gz | Nama file .gz dengan ls |
| not in gzip format | Namanya .gz tetapi bukan file yang dikompres dengan gzip | Format sebenarnya (zip, tar) dan perintah yang sesuai |
| unexpected end of file | Bagian akhir file terkompresi terpotong | Bandingkan ukuran dengan aslinya lalu unduh ulang · selamatkan bagian awal dengan zcat |
| already exists; do you wish to overwrite | Sudah ada file dengan nama yang sama dengan file yang akan dibuat | y atau -f jika boleh ditimpa · -c dengan nama lain untuk menyimpannya |
| is a directory -- ignored | Menulis nama folder alih-alih file | -r untuk file di dalam folder · tar untuk menggabungkannya menjadi satu |
🔢 FAQ & Konten yang Direkomendasikan
Cari
Perintah grep Linux
Perintah grep untuk mencari string di file teks seperti log, dengan contoh yang menyambungkannya ke tail dan find lewat pipe.
Disk
Perintah du: Memeriksa ruang disk file
Perintah du untuk memeriksa seberapa banyak ruang disk yang dipakai file dan direktori.
Melihat file
Perintah head dan perintah tail Linux
Perintah head dan tail untuk melihat baris pertama dan terakhir sebuah file, sering dipakai untuk memeriksa log akses server.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.