Perintah zip: Kompres Folder, Ekstrak dengan unzip, dan Opsi Kompresi
Perintah zip menggabungkan file dan folder di Linux menjadi satu file zip terkompresi, dan untuk mengekstraknya dipakai unzip bersamanya. Di server AlmaLinux 9, folder situs web yang dikompres dengan zip -r menyusut dari 35.825 byte menjadi 4.158 byte, dan unzip -O memperbaiki nama file yang rusak dalam file zip buatan Windows.
Output di bawah berasal dari folder kerja di server AlmaLinux 9.8, dijalankan sebagai root, dengan waktu dalam UTC. Folder site dan file catatan yang dikompres adalah file contoh yang dibuat untuk pengujian. Zip buatan Windows ditiru dengan file uji yang nama filenya disimpan dalam CP949.
1️⃣ Cara memakai perintah zip
Setelah zip, tulis dulu nama file zip baru, lalu daftarkan file yang akan dimasukkan. Perintah di bawah mengompres dua file, readme.txt dan memo.txt, menjadi satu notes.zip.
zip notes.zip readme.txt memo.txt adding: readme.txt (deflated 92%)
adding: memo.txt (stored 0%)[deflated 92%] di akhir baris adalah seberapa banyak ukuran file berkurang dari ukuran aslinya. [stored 0%] pada baris memo.txt yang berukuran 71 byte berarti file disimpan dengan ukuran asli tanpa dikompres.
Untuk mengompres folder, tambahkan -r. Jika hanya menulis nama folder tanpa -r, yang masuk hanya entri folder site/, tanpa file di dalamnya.
zip nodir.zip site adding: site/ (stored 0%)Folder site yang akan dikompres berisi tiga subfolder dan enam file, seperti di bawah.
Dengan -r, kesepuluh entri masuk semua: subfolder, file di dalamnya, bahkan .htaccess yang namanya diawali titik.
zip -r site.zip site adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/logs/ (stored 0%)
adding: site/logs/access.log (deflated 94%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Isi file zip yang sudah jadi bisa diperiksa tanpa mengekstrak dengan unzip -l. Total ukuran file yang tersimpan 35.825 byte, dan ls -l menunjukkan site.zip berukuran 4.158 byte.
unzip -l site.zipArchive: site.zip
Length Date Time Name
--------- ---------- ----- ----
0 10-28-2026 22:10 site/
0 10-28-2026 22:10 site/css/
4431 10-28-2026 22:10 site/css/style.css
0 10-28-2026 22:10 site/js/
1882 10-28-2026 22:10 site/js/app.js
0 10-28-2026 22:10 site/logs/
24134 10-28-2026 22:10 site/logs/access.log
3723 10-28-2026 22:10 site/index.html
1612 10-28-2026 22:10 site/about.html
43 10-28-2026 22:10 site/.htaccess
--------- -------
35825 10 filesls -l site.zip-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip2️⃣ Opsi perintah zip
Di antara opsi perintah zip, -x mengecualikan file yang cocok dengan pola. Jika [site/logs/*] ditentukan untuk melewati folder log, folder logs dan access.log tidak ikut, dan hanya delapan entri yang masuk.
zip -r site-nolog.zip site -x 'site/logs/*' adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Apit pola dengan tanda kutip tunggal agar shell tidak lebih dulu mengubah [*] menjadi nama file. Untuk tujuan yang sama, manual resmi memberi contoh dengan garis miring terbalik di depan [*].
-u hanya memasukkan ulang file yang berubah setelah file zip dibuat. Setelah satu baris ditambahkan ke akhir index.html, menjalankan dengan -ru hanya memasukkan ulang satu file itu sebagai [updating].
zip -ru site.zip siteupdating: site/index.html (deflated 90%)Saat perintah yang sama dijalankan sekali lagi tanpa file yang berubah, tidak ada output dan kode keluarnya 12. Dalam manual resmi, 12 berarti zip tidak punya pekerjaan.
zip -ru site.zip site; echo $?12Untuk menghapus entri di dalam file zip, gunakan -d. Jika [site/logs/*] ditentukan, entri folder logs dan access.log dihapus dari site.zip.
zip -d site.zip 'site/logs/*'deleting: site/logs/
deleting: site/logs/access.logAngka -0 sampai -9 adalah level kompresi, dan menurut manual resmi nilai bawaannya -6. Folder site yang sama dikompres tiga kali dengan -q tanpa output untuk membandingkan ukurannya. Karena satu baris ditambahkan ke index.html saat uji -u, total file asli pada saat ini 35.875 byte.
zip -qr -0 level0.zip sitezip -qr level6.zip sitezip -qr -9 level9.zip sitels -l level*.zip-rw-r--r-- 1 root root 37433 Oct 28 23:05 level0.zip
-rw-r--r-- 1 root root 4179 Oct 28 23:05 level6.zip
-rw-r--r-- 1 root root 3874 Oct 28 23:05 level9.zip| Tingkat kompresi | Ukuran file zip | Dibanding total asli |
|---|---|---|
| Total file asli | 35.875 byte | 100% |
| -0 (tanpa kompresi) | 37.433 byte | 104.3% |
| -6 (bawaan) | 4.179 byte | 11.6% |
| -9 (kompresi maksimum) | 3.874 byte | 10.8% |
37.433 byte yang dibuat dengan -0 lebih besar daripada total asli 35.875 byte. Itu adalah data tanpa kompresi ditambah 1.558 byte informasi header, seperti nama file dan waktu, yang melekat pada setiap entri. -9 lebih kecil 305 byte daripada nilai bawaan, dan seluruh selisihnya berasal dari file terbesar, access.log.
Untuk memasang kata sandi, tambahkan -e. Kata sandi dimasukkan dua kali, dan karakter yang diketik tidak tampil di layar.
zip -e secret.zip memo.txtEnter password:
Verify password:
adding: memo.txt (stored 0%)Bahkan secret.zip yang dibuat dengan -e menampilkan nama file, ukuran, dan tanggal di unzip -l tanpa kata sandi. Yang dienkripsi hanya isi file, jadi tidak cocok untuk materi yang nama filenya juga harus disembunyikan.
unzip -l secret.zipArchive: secret.zip
Length Date Time Name
--------- ---------- ----- ----
71 10-28-2026 22:10 memo.txt
--------- -------
71 1 file-P, yang menaruh kata sandi langsung di baris perintah, adalah opsi yang menurut peringatan manual resmi tidak aman, karena pengguna lain di server yang sama bisa melihat perintah yang sedang berjalan. Manual juga menyebut enkripsi standar zip sendiri relatif lemah.
Saat mengekstrak zip yang dibuat dengan -e, unzip menanyakan kata sandi untuk setiap file, dan file itu diekstrak jika kata sandinya benar.
unzip secret.zip -d decArchive: secret.zip
[secret.zip] memo.txt password:
extracting: dec/memo.txt📌 Opsi utama: hasil dari artikel ini
| Opsi | Fungsi | Hasil di artikel ini | |
|---|---|---|---|
| zip -r | Memasukkan semua subfolder dan file di dalam folder | Tanpa -r satu baris adding: site/, dengan -r sepuluh entri termasuk .htaccess | |
| zip -x | Mengecualikan file yang cocok dengan pola | Tanpa site/logs/* hanya delapan entri, tanpa folder logs dan access.log | |
| zip -u | Memasukkan ulang hanya file yang berubah setelah file zip dibuat | Satu baris updating: site/index.html (deflated 90%), tanpa perubahan tidak ada output dan kode keluar 12 | |
| zip -d | Menghapus entri di dalam file zip | deleting: site/logs/ dan deleting: site/logs/access.log | |
| zip -q | Menyembunyikan baris yang muncul saat mengompres | Ketiga perintah yang dikompres dengan -qr (-0, bawaan, -9) selesai tanpa baris adding | |
| zip -0 | Hanya menyimpan tanpa mengompres | level0.zip 37433 byte, lebih besar dari total asli | |
| zip -9 | Mengompres sekecil mungkin (bawaan -6) | level9.zip 3874 byte, level6.zip dengan nilai bawaan 4179 byte | |
| zip -e | Menanyakan kata sandi dan mengenkripsi isi | Menanyakan Enter password: dan Verify password:, lalu adding: memo.txt (stored 0%) | |
| unzip -l | Menampilkan daftar entri yang tersimpan tanpa mengekstrak | site.zip berisi 10 files, total 35825 byte | |
| unzip -d | Menentukan folder tujuan ekstrak, membuat folder baru jika belum ada | Dimulai dengan creating: restore/site/, dan struktur folder site diekstrak di bawah restore | |
| unzip -o | Menimpa semua file yang sudah ada tanpa bertanya | Lima baris inflating tanpa pertanyaan | |
| unzip -n | Melewati file yang sudah ada tanpa bertanya | Tidak ada yang muncul setelah baris Archive: site.zip | |
| unzip -t | Memeriksa data terkompresi tanpa mengekstrak | OK untuk setiap entri dan No errors detected, broken.zip yang terpotong memberi End-of-central-directory signature not found | |
| unzip -O | Menentukan pengodean karakter nama file di dalam zip | Dengan -O CP949 nama yang rusak tampil sebagai 보고서.txt dan 견적서.txt ("laporan" dan "penawaran harga" dalam bahasa Korea) | |
| unzip -p | Mengirim isi yang diekstrak ke output standar alih-alih membuat file | Hanya dua baris .htaccess yang muncul, tanpa membuat file |
📎 Opsi lainnya: menurut manual resmi
| Opsi | Fungsi | |
|---|---|---|
| zip -m | Menghapus file dan folder asli setelah dikompres (dihapus setelah file zip selesai dibuat; manual resmi menyarankan memakainya bersama -T) | |
| zip -j | Menyimpan nama file saja, tanpa jalur folder | |
| zip -y | Menyimpan tautan simbolis sebagai tautan, bukan file yang ditunjuknya | |
| zip -T | Memeriksa file zip yang dibuat dan tidak mengubah file zip asli jika pemeriksaan gagal | |
| zip -f | Hanya mengganti entri yang sudah ada di file zip dengan file yang berubah, tanpa menambah file baru | |
| zip -i | Hanya memasukkan file yang cocok dengan pola yang ditentukan | |
| zip -P | Menulis kata sandi langsung di baris perintah (manual resmi memperingatkan bahwa ini tidak aman) | |
| unzip -j | Mengekstrak file saja ke satu folder tanpa membuat struktur folder di dalam zip | |
| unzip -x | Menentukan entri yang tidak diekstrak | |
| unzip -q | Menyembunyikan baris yang muncul saat mengekstrak | |
| unzip -u | Hanya mengekstrak file yang tidak ada di disk dan file yang lebih baru | |
| unzip -v | Menampilkan juga metode kompresi, ukuran terkompresi, rasio, dan CRC dalam daftar |
3️⃣ Cara memakai perintah unzip
Untuk mengekstrak file zip di Linux, tulis nama file zip setelah unzip. Jika folder tujuan tidak ditentukan dengan -d, file diekstrak ke folder saat ini (menurut manual resmi), jadi kali ini folder restore ditentukan.
unzip site.zip -d restoreArchive: site.zip
creating: restore/site/
creating: restore/site/css/
inflating: restore/site/css/style.css
creating: restore/site/js/
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessJika folder yang ditentukan dengan -d belum ada, unzip membuatnya, lalu struktur folder site diekstrak apa adanya di bawahnya.
Jika diekstrak lagi ke tempat yang sama, unzip berhenti setiap kali menemukan file yang sudah ada dan bertanya apakah akan menimpanya. Jika memilih [N]one, proses selesai tanpa menimpa satu pun file yang tersisa.
unzip site.zip -d restoreArchive: site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: NAgar tanpa pertanyaan, tambahkan -o atau -n. -o menimpa semua file yang ada, dan -n melewati file yang ada. Karena manual resmi mencantumkan -o sebagai opsi berbahaya, pastikan dulu folder itu boleh ditimpa sebelum menambahkan -o.
unzip -o site.zip -d restoreArchive: site.zip
inflating: restore/site/css/style.css
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessunzip -n site.zip -d restoreArchive: site.zipJika diekstrak dengan -n ke tempat yang semua filenya sudah ada, tidak ada yang muncul setelah baris Archive.
Untuk mengekstrak hanya sebagian file zip, tulis jalur atau pola setelah nama file zip. Jika [site/css/*] ditentukan, hanya folder css dan style.css yang diekstrak.
unzip site.zip 'site/css/*' -d partArchive: site.zip
creating: part/site/css/
inflating: part/site/css/style.css4️⃣ Error unzip
File zip yang diterima dari server lain diperiksa dulu dengan unzip -t sebelum diekstrak. Jika data terkompresinya tidak bermasalah, setiap entri menampilkan OK dan baris terakhir menampilkan [No errors detected].
unzip -t site.zipArchive: site.zip
testing: site/ OK
testing: site/css/ OK
testing: site/css/style.css OK
testing: site/js/ OK
testing: site/js/app.js OK
testing: site/index.html OK
testing: site/about.html OK
testing: site/.htaccess OK
No errors detected in compressed data of site.zip.Zip yang bagian akhirnya terpotong karena transfer terputus berakhir dengan [End-of-central-directory signature not found]. Ini hasil pemeriksaan dengan -t pada broken.zip yang hanya menyimpan 2.000 byte pertama dari site.zip, yang menjadi 2.436 byte setelah entri logs dihapus dengan -d.
unzip -t broken.zipArchive: broken.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of broken.zip or
broken.zip.zip, and cannot find broken.zip.ZIP, period.unzip lebih dulu membaca daftar file di bagian paling akhir file zip (central directory). Karena itu, ia bahkan tidak bisa memeriksa entri pertama broken.zip yang bagian akhirnya terpotong.
File yang bukan zip juga memberi pesan yang sama. site.tar.gz yang dibundel dengan tar berakhir dengan error yang sama saat dibuka dengan unzip; file tar.gz diekstrak dengan perintah tar.
unzip site.tar.gzArchive: site.tar.gz
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of site.tar.gz or
site.tar.gz.zip, and cannot find site.tar.gz.ZIP, period.File zip yang dibuat di Windows kadang menyimpan nama file dalam pengodean karakter Windows, bukan UTF-8. Saat report-win.zip, yang namanya disimpan dalam CP949, dibuka dengan unzip -l di server UTF-8, nama file tampil sebagai simbol yang tidak terbaca.
unzip -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 ║╕░э╝н.txt
17 10-28-2026 22:10 ░▀└√╝н.txt
--------- -------
43 2 filesJika setelah -O ditulis pengodean karakter Windows yang membuat zip itu, nama tampil dengan benar, dan file yang diekstrak dengan opsi yang sama juga dibuat dengan nama aslinya.
unzip -O CP949 -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 보고서.txt
17 10-28-2026 22:10 견적서.txt
--------- -------
43 2 filesunzip -O CP949 report-win.zip -d winArchive: report-win.zip
inflating: win/보고서.txt
inflating: win/견적서.txtMenurut bantuan unzip, -O adalah opsi untuk zip yang dibuat di DOS atau Windows, dan -I untuk zip yang dibuat di sistem lain.
Pesan error yang muncul saat mengekstrak dan hal yang perlu diperiksa berikutnya ada di bawah ini.
| Output | Arti | Yang perlu diperiksa berikutnya |
|---|---|---|
| End-of-central-directory signature not found | Daftar file di akhir file zip tidak ditemukan — file terpotong atau bukan zip | Bandingkan ukuran dengan aslinya lalu unduh ulang · tar.gz dengan tar |
| cannot find or open | Tidak ada file dengan nama itu di folder saat ini | Nama dan lokasi file dengan ls |
| skipping: … incorrect password | Kata sandi salah tiga kali, file itu dilewati (kode keluar 82) | Huruf besar-kecil kata sandi dan bahasa input |
| Nama file berubah menjadi simbol | Nama disimpan dalam pengodean karakter Windows | Pengodean itu (CP949 dan lainnya) setelah -O |
🔲 Simulator perintah zip
Di simulator di bawah, Anda bisa mengetik sendiri langkahnya: mengompres dengan zip, lalu melihat daftar atau mengekstrak dengan unzip.
🔢 FAQ & Konten yang Direkomendasikan
WordPress · Plugin
Cara install plugin WordPress: instal lewat pencarian, upload ZIP, dan aktivasi
Langkah memasang plugin dari layar Tambah Plugin, dengan mencari di direktori resmi atau mengunggah file zip.
Cari
Perintah find Linux
Perintah find mencari file berdasarkan syarat seperti nama, ekstensi, ukuran, dan tanggal, lalu melanjutkan pekerjaan pada file yang ditemukan.
Manajemen file
Opsi perintah cp dan pengaturan menimpa sekaligus saat dijalankan
Opsi perintah cp untuk menyalin file dan direktori, serta cara menyalin sekaligus tanpa konfirmasi menimpa.
ℹ️ 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.