gzip: kompres file di Linux, ekstrak gzip, serta cara memakai gunzip dan zcat

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDiperiksa 2026-11-05
Perintah Kompresi · ArsipgzipgunzipzcatLokasi/usr/bin/gzip
Kompres file di Linux dan ekstrak gzip

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

  • ↪️ Mengompres file dan menyimpan file asli (-k)

Folder uji berisi dua log akses, dua file catatan, folder config berisi file konfigurasi, dan folder restore yang kosong.

ls -l
total 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 restore

Jika 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.log

Setelah 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.gz
ls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gz

Dengan -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.txt
readme.txt:	 81.5% -- replaced with readme.txt.gz

Untuk menyimpan file asli, tambahkan -k. Jika memo.txt dikompres dengan -k, memo.txt dan memo.txt.gz tetap ada berdampingan.

gzip -k memo.txt
ls -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.gz

memo.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.conf
config/app.conf:	 78.7% -- replaced with config/app.conf.gz
config/site.conf:	 87.7% -- replaced with config/site.conf.gz
ls -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.gz

2️⃣ Ekstrak gzip

  • ↪️ gzip -d dan gunzip, ekstrak ke folder lain (-c)

Saat access.log.gz diekstrak dengan -d, tidak ada output, access.log muncul kembali, dan access.log.gz tidak tersisa.

gzip -d access.log.gz
ls -l access.log access.log.gz
ls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log

access.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.gz
readme.txt.gz:	 81.5% -- created readme.txt
ls -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.gz

gzip 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.txt
ls -l restore/
total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txt

Saat 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, -t, tingkat kompresi, -r

-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.log
gzip -l access.log.gz
         compressed        uncompressed  ratio uncompressed_name
               4424               31878  86.2% access.log

Jika ditambah -v, di depannya muncul metode kompresi (defla, singkatan dari deflate), CRC data asli, serta tanggal dan waktu file asli.

gzip -lv access.log.gz
method  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.gz
access.log.gz:	 OK

Angka -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 -c
5564
gzip -c -6 access.log | wc -c
4424
gzip -c -9 access.log | wc -c
4164
Tingkat kompresiUkuran .gzDibanding ukuran asli
File asli (access.log)31.878 byte100%
-1 (tercepat)5.564 byte17.5%
-6 (bawaan)4.424 byte13.9%
-9 (terkecil)4.164 byte13.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 config
gzip: config is a directory -- ignored

Untuk 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 config
config/app.conf.gz:	 78.7% -- replaced with config/app.conf
config/site.conf.gz:	 87.7% -- replaced with config/site.conf
ls -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 config
tar -tzvf config.tar.gz
drwxr-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

OpsiFungsiHasil di artikel ini
-cMengirim hasil ke output standar dan membiarkan file asli apa adanyaOutput -dc yang dialihkan ke restore/memo.txt membuat memo.txt berukuran 45 byte
-dEkstrak (sama dengan gunzip)access.log.gz hilang dan access.log berukuran 31878 byte kembali
-kMenyimpan file asli setelah dikompres atau diekstrakmemo.txt (45 byte) dan memo.txt.gz (71 byte) tetap ada berdampingan
-vMenampilkan persentase pengurangan dan nama file baru untuk setiap filereadme.txt: 81.5% -- replaced with readme.txt.gz
-lMenampilkan daftar ukuran, persentase, dan nama setelah diekstrak dari file terkompresiUkuran terkompresi 4424, ukuran asli 31878, persentase 86.2%, nama access.log
-tMemeriksa apakah file terkompresi rusak atau tidakDengan -tv, access.log.gz: OK, dan broken.gz yang ujungnya terpotong menghasilkan unexpected end of file
-rMengompres atau mengekstrak semua file di dalam folderSatu kali gunzip -rv config mengekstrak config/app.conf.gz dan config/site.conf.gz
-fMenimpa tanpa bertanya meskipun ada file dengan nama yang samaDitimpa tanpa pertanyaan: memo.txt tidak ada, hanya tersisa memo.txt.gz (71 byte)
-1 ~ -9Tingkat 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

OpsiFungsi
-NSaat mengompres menyimpan nama dan waktu file asli (bawaan saat kompres), dan saat mengekstrak memulihkan nama dan waktu yang tersimpan
-nSaat mengompres tidak menyimpan nama dan waktu file asli, dan saat mengekstrak memakai nama tanpa .gz (bawaan saat ekstrak)
-qTidak menampilkan peringatan apa pun
-S akhiranMengompres dengan akhiran yang ditentukan sebagai ganti .gz, dan saat mengekstrak mencari akhiran itu lebih dulu
--rsyncableMengompres 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.

Simulator perintah gzipgzip 1.12
[root@server work]#
Hanya berjalan di browser dan tidak mengompres file sungguhan. Ukuran terkompresi adalah nilai hasil pengukuran, sedangkan isi yang baru dibuat di simulator memakai nilai perkiraan. Tekan ↑↓ untuk memanggil perintah sebelumnya.

4️⃣ Melihat isi file gzip

  • ↪️ zcat · zgrep

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-20261027

Log 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 -3
192.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 13813

Output 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 -l
600

Untuk 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.gz
37
zgrep ' 404 ' access.log-20261027.gz | head -3
192.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 414

Jika 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 format

zgrep 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.gz
access.log:36
access.log-20261027.gz:52

5️⃣ Error gzip

  • ↪️ not in gzip format dan unexpected end of file

Jika file yang sudah berakhiran .gz dikompres lagi, muncul [already has .gz suffix -- unchanged] dan file tetap seperti semula.

gzip access.log.gz
gzip: access.log.gz already has .gz suffix -- unchanged

Sebaliknya, jika file yang tidak berakhiran .gz diekstrak dengan -d, muncul [unknown suffix -- ignored].

gzip -d memo.txt
gzip: memo.txt: unknown suffix -- ignored

File 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.gz
gzip -d notgzip.gz

gzip: notgzip.gz: not in gzip format

File .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.gz
gzip -t broken.gz

gzip: broken.gz: unexpected end of file

Bahkan 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.log
wc -l restore/broken.log

gzip: broken.gz: unexpected end of file
162 restore/broken.log

Jika 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.txt
gzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
	not overwritten

Dengan -f, gzip langsung menimpa tanpa bertanya. Karena -k tidak ditambahkan, memo.txt hilang dan hanya memo.txt.gz yang tersisa.

gzip -f memo.txt
ls -l memo.txt memo.txt.gz
ls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

Pesan error yang muncul saat menangani kompresi dan hal yang perlu diperiksa berikutnya adalah sebagai berikut.

OutputArtiYang perlu diperiksa berikutnya
already has .gz suffix -- unchangedFile sudah berakhiran .gz sehingga tidak dikompres lagiApakah nama file asli yang akan dikompres sudah ditulis
unknown suffix -- ignoredMencoba mengekstrak file yang tidak berakhiran .gzNama file .gz dengan ls
not in gzip formatNamanya .gz tetapi bukan file yang dikompres dengan gzipFormat sebenarnya (zip, tar) dan perintah yang sesuai
unexpected end of fileBagian akhir file terkompresi terpotongBandingkan ukuran dengan aslinya lalu unduh ulang · selamatkan bagian awal dengan zcat
already exists; do you wish to overwriteSudah ada file dengan nama yang sama dengan file yang akan dibuaty atau -f jika boleh ditimpa · -c dengan nama lain untuk menyimpannya
is a directory -- ignoredMenulis nama folder alih-alih file-r untuk file di dalam folder · tar untuk menggabungkannya menjadi satu

🔢 FAQ & Konten yang Direkomendasikan

Folder config digabung dengan tar menjadi x.tar, dikompres dengan gzip -v, lalu diekstrak dengan gunzip -v; hanya lapisan .gz yang terlepas dan tersisa x.tar berukuran 10.240 byte. Untuk mengeluarkan file yang digabung, Anda perlu mengekstraknya sekali lagi dengan tar. Saat x.tar.gz yang dikompres ulang diekstrak dengan tar -xzf ke folder restore/t, folder config dan kedua file konfigurasi keluar sekaligus.

File berukuran 28.648.800 byte yang dibuat dengan menyambung log akses yang sama 600 kali dikompres dua kali di setiap tingkat. -1 butuh sekitar 0,3 detik untuk 4.821.317 byte, bawaan -6 sekitar 0,65 detik untuk 3.625.500 byte, dan -9 sekitar 2,5 detik untuk 3.376.224 byte. -9 sekitar 7% lebih kecil dari -6, tetapi waktunya hampir empat kali lipat.

Saat mengompres, gzip menyimpan nama file asli di dalam file .gz. Setelah readme.txt.gz disalin ke folder restore sebagai backup-1.gz, gzip -lN menampilkan nama tersimpan readme.txt, dan gunzip -N membuat restore/readme.txt. Tanpa -N, namanya menjadi nama file tanpa .gz (menurut manual resmi).

ℹ️ 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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Buktikan bahwa Anda manusia: 1   +   5   =