Perintah zip: Kompres Folder, Ekstrak dengan unzip, dan Opsi Kompresi

Lingkungan ujiKeluarga RHELAlmaLinux 9.8akun rootDiperiksa 2026-11-05
Perintah Kompresi · ArsipzipunzipLokasi/usr/bin/zip
Mengompres folder dan mengekstrak dengan unzip

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

  • ↪️ Mengompres file dan folder (-r)

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.

site/
css/
style.css
js/
app.js
logs/
access.log
index.html
about.html
.htaccess

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.zip
Archive:  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 files
ls -l site.zip
-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip

2️⃣ Opsi perintah zip

  • ↪️ -x, -u, -d, level kompresi, -e

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 site
updating: 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 $?
12

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

Angka -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 site
zip -qr level6.zip site
zip -qr -9 level9.zip site
ls -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 kompresiUkuran file zipDibanding total asli
Total file asli35.875 byte100%
-0 (tanpa kompresi)37.433 byte104.3%
-6 (bawaan)4.179 byte11.6%
-9 (kompresi maksimum)3.874 byte10.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.txt
Enter 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.zip
Archive:  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 dec
Archive:  secret.zip
[secret.zip] memo.txt password:
 extracting: dec/memo.txt

📌 Opsi utama: hasil dari artikel ini

OpsiFungsiHasil di artikel ini
zip -rMemasukkan semua subfolder dan file di dalam folderTanpa -r satu baris adding: site/, dengan -r sepuluh entri termasuk .htaccess
zip -xMengecualikan file yang cocok dengan polaTanpa site/logs/* hanya delapan entri, tanpa folder logs dan access.log
zip -uMemasukkan ulang hanya file yang berubah setelah file zip dibuatSatu baris updating: site/index.html (deflated 90%), tanpa perubahan tidak ada output dan kode keluar 12
zip -dMenghapus entri di dalam file zipdeleting: site/logs/ dan deleting: site/logs/access.log
zip -qMenyembunyikan baris yang muncul saat mengompresKetiga perintah yang dikompres dengan -qr (-0, bawaan, -9) selesai tanpa baris adding
zip -0Hanya menyimpan tanpa mengompreslevel0.zip 37433 byte, lebih besar dari total asli
zip -9Mengompres sekecil mungkin (bawaan -6)level9.zip 3874 byte, level6.zip dengan nilai bawaan 4179 byte
zip -eMenanyakan kata sandi dan mengenkripsi isiMenanyakan Enter password: dan Verify password:, lalu adding: memo.txt (stored 0%)
unzip -lMenampilkan daftar entri yang tersimpan tanpa mengekstraksite.zip berisi 10 files, total 35825 byte
unzip -dMenentukan folder tujuan ekstrak, membuat folder baru jika belum adaDimulai dengan creating: restore/site/, dan struktur folder site diekstrak di bawah restore
unzip -oMenimpa semua file yang sudah ada tanpa bertanyaLima baris inflating tanpa pertanyaan
unzip -nMelewati file yang sudah ada tanpa bertanyaTidak ada yang muncul setelah baris Archive: site.zip
unzip -tMemeriksa data terkompresi tanpa mengekstrakOK untuk setiap entri dan No errors detected, broken.zip yang terpotong memberi End-of-central-directory signature not found
unzip -OMenentukan pengodean karakter nama file di dalam zipDengan -O CP949 nama yang rusak tampil sebagai 보고서.txt dan 견적서.txt ("laporan" dan "penawaran harga" dalam bahasa Korea)
unzip -pMengirim isi yang diekstrak ke output standar alih-alih membuat fileHanya dua baris .htaccess yang muncul, tanpa membuat file

📎 Opsi lainnya: menurut manual resmi

OpsiFungsi
zip -mMenghapus file dan folder asli setelah dikompres (dihapus setelah file zip selesai dibuat; manual resmi menyarankan memakainya bersama -T)
zip -jMenyimpan nama file saja, tanpa jalur folder
zip -yMenyimpan tautan simbolis sebagai tautan, bukan file yang ditunjuknya
zip -TMemeriksa file zip yang dibuat dan tidak mengubah file zip asli jika pemeriksaan gagal
zip -fHanya mengganti entri yang sudah ada di file zip dengan file yang berubah, tanpa menambah file baru
zip -iHanya memasukkan file yang cocok dengan pola yang ditentukan
zip -PMenulis kata sandi langsung di baris perintah (manual resmi memperingatkan bahwa ini tidak aman)
unzip -jMengekstrak file saja ke satu folder tanpa membuat struktur folder di dalam zip
unzip -xMenentukan entri yang tidak diekstrak
unzip -qMenyembunyikan baris yang muncul saat mengekstrak
unzip -uHanya mengekstrak file yang tidak ada di disk dan file yang lebih baru
unzip -vMenampilkan juga metode kompresi, ukuran terkompresi, rasio, dan CRC dalam daftar

3️⃣ Cara memakai perintah unzip

  • ↪️ Mengekstrak zip di Linux dengan -d, -o, dan -n

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 restore
Archive:  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/.htaccess

Jika 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 restore
Archive:  site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: N

Agar 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 restore
Archive:  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/.htaccess
unzip -n site.zip -d restore
Archive:  site.zip

Jika 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 part
Archive:  site.zip
   creating: part/site/css/
  inflating: part/site/css/style.css

4️⃣ Error unzip

  • ↪️ End-of-central-directory dan nama file yang rusak

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.zip
Archive:  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.zip
Archive:  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.gz
Archive:  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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   ║╕░э╝н.txt
       17  10-28-2026 22:10   ░▀└√╝н.txt
---------                     -------
       43                     2 files

Jika 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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   보고서.txt
       17  10-28-2026 22:10   견적서.txt
---------                     -------
       43                     2 files
unzip -O CP949 report-win.zip -d win
Archive:  report-win.zip
  inflating: win/보고서.txt
  inflating: win/견적서.txt

Menurut 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.

OutputArtiYang perlu diperiksa berikutnya
End-of-central-directory signature not foundDaftar file di akhir file zip tidak ditemukan — file terpotong atau bukan zipBandingkan ukuran dengan aslinya lalu unduh ulang · tar.gz dengan tar
cannot find or openTidak ada file dengan nama itu di folder saat iniNama dan lokasi file dengan ls
skipping: … incorrect passwordKata sandi salah tiga kali, file itu dilewati (kode keluar 82)Huruf besar-kecil kata sandi dan bahasa input
Nama file berubah menjadi simbolNama disimpan dalam pengodean karakter WindowsPengodean 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.

Simulator perintah zipZip 3.0 · UnZip 6.00
[root@server work]#
Hanya berjalan di dalam browser dan tidak mengompres file sungguhan. Rasio kompresi adalah nilai hasil ukur, dan file yang baru dibuat di simulator memakai nilai perkiraan. Tekan ↑↓ untuk memanggil kembali perintah yang diketik sebelumnya.

🔢 FAQ & Konten yang Direkomendasikan

File .gz yang dikompres dengan gzip berakhir dengan [End-of-central-directory signature not found] saat dibuka dengan unzip. Saat diekstrak dengan [gzip -d readme.txt.gz], readme.txt.gz kembali menjadi readme.txt. File .tar.gz, yang dibuat dengan membundel beberapa file memakai tar lalu mengompresnya dengan gzip, diekstrak sekaligus dengan tar.

Di server AlmaLinux 9 yang diperiksa, zip dan unzip adalah perintah yang dipasang oleh paket zip dan unzip masing-masing. Jadi, di keluarga RHEL pasang dengan [sudo dnf install zip unzip], dan di keluarga Debian dengan [sudo apt install zip unzip] (menurut daftar paket resmi Debian).

Tulis file zip dan jalur di dalamnya setelah unzip -p, maka isinya langsung tampil di layar. Saat [unzip -p site.zip site/.htaccess] dijalankan, hanya dua baris .htaccess yang muncul tanpa membuat file.

ℹ️ 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: 7   +   4   =