zip komutu: Klasör sıkıştırma, unzip ile açma ve sıkıştırma seçenekleri

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabı2026-11-05 tarihinde kontrol edildi
Sıkıştırma · arşivleme komutlarızipunzipKonum/usr/bin/zip
Klasör sıkıştırma ve unzip ile açma

zip komutu, Linux'ta dosya ve klasörleri tek bir zip dosyasında toplayıp sıkıştırır; açmak için de unzip birlikte kullanılır. AlmaLinux 9 sunucusunda bir web sitesi klasörü zip -r ile sıkıştırıldığında 35.825 bayttan 4.158 bayta indi ve Windows'ta oluşturulmuş bir zip dosyasındaki bozuk dosya adları unzip -O ile düzeldi.

Aşağıdaki çıktılar, AlmaLinux 9.8 sunucusunda root hesabıyla bir çalışma klasöründe alınmıştır ve saatler UTC'dir. Sıkıştırılan site klasörü ve not dosyaları test için oluşturulmuş örnek dosyalardır. Windows'ta oluşturulan zip, dosya adları CP949 ile kaydedilmiş bir test dosyasıyla yeniden üretildi.

1️⃣ zip komutu nasıl kullanılır

  • ↪️ Dosya ve klasör sıkıştırma (-r)

zip'ten sonra önce oluşturulacak yeni zip dosyasının adını, ardından içine konacak dosyaları yazın. Aşağıdaki komut readme.txt ve memo.txt dosyalarını tek bir notes.zip içine sıkıştırır.

zip notes.zip readme.txt memo.txt
  adding: readme.txt (deflated 92%)
  adding: memo.txt (stored 0%)

Satır sonundaki [deflated 92%], dosyanın özgün boyutuna göre ne kadar küçüldüğünü gösterir. 71 baytlık memo.txt satırındaki [stored 0%], dosyanın sıkıştırılmadan özgün boyutuyla saklandığı anlamına gelir.

Klasör sıkıştırırken -r ekleyin. -r olmadan yalnızca klasör adını yazarsanız arşive yalnızca site/ klasör girdisi girer, içindeki dosyalar girmez.

zip nodir.zip site
  adding: site/ (stored 0%)

Sıkıştırılacak site klasöründe aşağıdaki gibi üç alt klasör ve altı dosya var.

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

-r eklendiğinde alt klasörler, içlerindeki dosyalar ve adı noktayla başlayan .htaccess dahil on girdinin tamamı arşive girer.

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%)

Hazır bir zip dosyasında ne olduğunu açmadan unzip -l ile kontrol edin. Saklanan dosyaların toplamı 35.825 bayttı, ls -l ise site.zip'i 4.158 bayt gösterdi.

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️⃣ zip komutu seçenekleri

  • ↪️ -x, -u, -d, sıkıştırma düzeyi, -e

zip komutu seçeneklerinden -x, bir desene uyan dosyaları dışarıda bırakır. Günlük klasörünü dışarıda bırakmak için [site/logs/*] verildiğinde logs klasörü ve access.log çıkar, yalnızca sekiz girdi arşive girer.

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%)

Kabuk [*] karakterini önce dosya adlarına çevirmesin diye deseni tek tırnak içine alın. Resmî kılavuz aynı amaçla [*] önüne ters eğik çizgi konmuş bir örnek verir.

-u, zip dosyası oluşturulduktan sonra değişen dosyaları yeniden ekler. index.html sonuna bir satır eklendikten sonra -ru ile çalıştırıldığında yalnızca o dosya [updating] olarak yeniden eklenir.

zip -ru site.zip site
updating: site/index.html (deflated 90%)

Değişen dosya yokken aynı komut bir kez daha çalıştırıldığında hiçbir şey yazdırmadı ve çıkış kodu 12 oldu. Resmî kılavuzda 12, zip'in yapacak bir işi olmadığı anlamına gelir.

zip -ru site.zip site; echo $?
12

zip dosyasındaki girdileri silmek için -d kullanın. [site/logs/*] verildiğinde site.zip'ten logs klasörü girdisi ve access.log silinir.

zip -d site.zip 'site/logs/*'
deleting: site/logs/
deleting: site/logs/access.log

-0 ile -9 arasındaki sayılar sıkıştırma düzeyidir; resmî kılavuza göre varsayılan -6'dır. Boyutları karşılaştırmak için aynı site klasörü -q ile çıktısız olarak üç kez sıkıştırıldı. -u testinde index.html'ye bir satır eklendiği için özgün dosyaların toplamı bu noktada 35.875 bayttır.

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
Sıkıştırma düzeyizip dosya boyutuÖzgün toplama göre
Özgün dosya toplamı35.875 bayt100%
-0 (sıkıştırma yok)37.433 bayt104.3%
-6 (varsayılan)4.179 bayt11.6%
-9 (en yüksek sıkıştırma)3.874 bayt10.8%

-0 ile oluşan 37.433 bayt, 35.875 baytlık özgün toplamdan büyüktü. Bu, sıkıştırılmamış veriye her girdiye eklenen dosya adı ve saat gibi 1.558 baytlık başlık bilgisinin eklenmiş hâlidir. -9 varsayılandan 305 bayt küçüktü ve farkın tamamı en büyük dosya olan access.log'dan geldi.

Parola koymak için -e ekleyin. Parola iki kez girilir ve yazılan karakterler ekranda görünmez.

zip -e secret.zip memo.txt
Enter password:
Verify password:
  adding: memo.txt (stored 0%)

-e ile oluşturulan secret.zip de unzip -l ile bakıldığında dosya adlarını, boyutlarını ve tarihlerini parolasız gösterdi. Yalnızca dosya içerikleri şifrelendiği için dosya adlarının da gizli kalması gereken belgeler için uygun değildir.

unzip -l secret.zip
Archive:  secret.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       71  10-28-2026 22:10   memo.txt
---------                     -------
       71                     1 file

Parolayı doğrudan komut satırına yazan -P, resmî kılavuzun güvenli olmadığı konusunda uyardığı bir seçenektir; çünkü aynı sunucudaki diğer kullanıcılar çalışan komutları görebilir. Kılavuz, zip'in standart şifrelemesinin kendisinin de görece zayıf olduğunu açıklar.

-e ile oluşturulmuş bir zip açılırken unzip her dosya için parola sorar; doğru girildiğinde o dosya açılır.

unzip secret.zip -d dec
Archive:  secret.zip
[secret.zip] memo.txt password:
 extracting: dec/memo.txt

📌 Başlıca seçenekler: bu yazıda çalıştırılan sonuçlar

SeçenekGörevBu yazıdaki sonuç
zip -rKlasördeki tüm alt klasörleri ve dosyaları ekler-r olmadan tek satır adding: site/, -r ile .htaccess dahil on girdi
zip -xBir desene uyan dosyaları dışarıda bırakırsite/logs/* çıkarılınca logs klasörü ve access.log olmadan yalnızca sekiz girdi
zip -uzip dosyası oluşturulduktan sonra değişen dosyaları yeniden eklerTek satır updating: site/index.html (deflated 90%), değişen dosya yokken çıktı yok ve çıkış kodu 12
zip -dzip dosyasındaki girdileri silerdeleting: site/logs/ ve deleting: site/logs/access.log
zip -qSıkıştırma sırasında çıkan satırları gizler-qr ile sıkıştırılan üç komut (-0, varsayılan, -9) da adding satırı olmadan biter
zip -0Sıkıştırmadan yalnızca saklarlevel0.zip 37433 bayt, özgün toplamdan büyük
zip -9En küçük boyuta sıkıştırır (varsayılan -6)level9.zip 3874 bayt, varsayılanla oluşturulan level6.zip 4179 bayt
zip -eParola sorar ve içeriği şifrelerEnter password: ve Verify password: sorulur, ardından adding: memo.txt (stored 0%)
unzip -lAçmadan saklanan girdilerin listesini yazdırırsite.zip içinde 10 files, toplam 35825 bayt
unzip -dAçılacak klasörü belirtir, olmayan klasörü yeni oluştururcreating: restore/site/ ile başlar ve site klasör yapısı restore altına açılır
unzip -oVar olan dosyaların üzerine sormadan yazarSoru olmadan beş inflating satırı
unzip -nVar olan dosyaları sormadan atlarArchive: site.zip satırından sonra hiçbir şey çıkmaz
unzip -tAçmadan sıkıştırılmış veriyi denetlerHer girdi için OK ve No errors detected, kesik broken.zip için End-of-central-directory signature not found
unzip -Ozip içindeki dosya adlarının karakter kodlamasını belirtir-O CP949 ile bozuk adlar 보고서.txt ve 견적서.txt olarak görünür (Korece "rapor" ve "teklif")
unzip -pAçılan içeriği dosya oluşturmadan standart çıktıya gönderirDosya oluşmadan yalnızca .htaccess'in iki satırı çıkar

📎 Diğer seçenekler: resmî kılavuza göre

SeçenekGörev
zip -mSıkıştırmadan sonra özgün dosya ve klasörleri siler (zip dosyası tamamlandıktan sonra siler; resmî kılavuz -T ile birlikte kullanılmasını önerir)
zip -jKlasör yolu olmadan yalnızca dosya adlarını saklar
zip -ySembolik bağlantıyı, gösterdiği dosya yerine bağlantı olarak saklar
zip -TOluşturulan zip dosyasını denetler, denetim başarısız olursa özgün zip dosyasını değiştirmez
zip -fYalnızca zip dosyasında zaten bulunan girdileri değişen dosyalarla değiştirir, yeni dosya eklemez
zip -iYalnızca belirtilen desene uyan dosyaları ekler
zip -PParolayı doğrudan komut satırına yazar (resmî kılavuz güvenli olmadığı konusunda uyarır)
unzip -jzip içindeki klasör yapısını oluşturmadan dosyaları tek bir klasöre açar
unzip -xAçılmayacak girdileri belirtir
unzip -qAçma sırasında çıkan satırları gizler
unzip -uYalnızca diskte olmayan ve daha yeni olan dosyaları açar
unzip -vListeye sıkıştırma yöntemi, sıkıştırılmış boyut, oran ve CRC'yi de ekler

3️⃣ unzip komutu nasıl kullanılır

  • ↪️ Linux'ta zip açma ve -d, -o, -n

Linux'ta bir zip dosyasını açmak için unzip'ten sonra zip dosyasının adını yazın. -d ile açılacak klasör belirtilmezse dosyalar bulunduğunuz klasöre açılır (resmî kılavuza göre); bu yüzden bu kez restore klasörü belirtildi.

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

-d ile belirtilen klasör yoksa unzip onu oluşturur ve site klasör yapısını altına olduğu gibi açar.

Aynı yere yeniden açtığınızda unzip, var olan her dosyada durur ve üzerine yazılıp yazılmayacağını sorar. [N]one seçilirse kalan dosyaların hiçbirinin üzerine yazmadan biter.

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

Sormadan işlem yapmak için -o ya da -n ekleyin. -o var olan tüm dosyaların üzerine yazar, -n ise var olan dosyaları atlar. Resmî kılavuz -o'yu tehlikeli bir seçenek olarak yazdığı için -o eklemeden önce klasörün üzerine yazılabilir olduğunu kontrol edin.

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

Tüm dosyaların zaten bulunduğu bir yere -n ile açıldığında Archive satırından sonra hiçbir şey çıkmaz.

zip dosyasının yalnızca bir kısmını açmak için zip dosyası adından sonra bir yol ya da desen yazın. [site/css/*] verildiğinde yalnızca css klasörü ve style.css açılır.

unzip site.zip 'site/css/*' -d part
Archive:  site.zip
   creating: part/site/css/
  inflating: part/site/css/style.css

4️⃣ unzip hataları

  • ↪️ End-of-central-directory ve bozuk dosya adları

Başka bir sunucudan alınan zip dosyasını açmadan önce unzip -t ile denetleyin. Sıkıştırılmış veride sorun yoksa her girdi için OK çıkar ve son satırda [No errors detected] yazar.

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.

Aktarım kesildiği için sonu eksik kalan zip, [End-of-central-directory signature not found] ile bitti. Bu, -d ile logs girdileri silindikten sonra 2.436 bayta inen site.zip'in yalnızca ilk 2.000 baytını tutan broken.zip'in -t ile denetlenmesinin sonucudur.

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, zip dosyasının en sonundaki dosya listesini (central directory) önce okur. Bu yüzden sonu kesik broken.zip'in ilk girdisini bile denetleyemedi.

zip olmayan bir dosya verildiğinde de aynı ileti çıktı. tar ile paketlenmiş site.tar.gz unzip ile açılınca aynı hatayla bitti; tar.gz dosyası ise tar komutu ile açılır.

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.

Windows'ta oluşturulan zip dosyaları bazen dosya adlarını UTF-8 yerine bir Windows karakter kodlamasıyla saklar. Adları CP949 ile kaydedilmiş report-win.zip, UTF-8 bir sunucuda unzip -l ile açılınca dosya adları okunamayan simgeler olarak çıktı.

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

-O'dan sonra zip'i oluşturan Windows'un karakter kodlamasını yazarsanız adlar doğru görünür ve aynı seçenekle açılan dosyalar da özgün adlarıyla oluşturulur.

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

unzip yardımına göre -O, DOS ve Windows'ta oluşturulan zip'ler için; -I ise diğer sistemlerde oluşturulan zip'ler için belirtilen seçenektir.

Açma sırasında çıkan hata iletileri ve sonra kontrol edilecekler aşağıdadır.

ÇıktıAnlamıSonra kontrol edilecek
End-of-central-directory signature not foundzip dosyasının sonundaki dosya listesi bulunamadı — sonu kesik bir dosya ya da zip olmayan bir dosyaBoyutu özgün dosyayla karşılaştırıp yeniden indirme · tar.gz için tar
cannot find or openBu adda bir dosya bulunduğunuz klasörde yokls ile dosya adı ve konumu
skipping: … incorrect passwordParola üç kez yanlış girildi, o dosya atlandı (çıkış kodu 82)Parolanın büyük/küçük harfleri ve giriş dili
Dosya adları simgelere dönüşüyorAdlar bir Windows karakter kodlamasıyla kaydedilmiş-O'dan sonra o kodlama (CP949 vb.)

🔲 zip komutu simülatörü

Aşağıdaki simülatörde zip ile sıkıştırmayı, unzip ile listelemeyi ya da açmayı kendiniz yazarak deneyebilirsiniz.

zip komutu simülatörüZip 3.0 · UnZip 6.00
[root@server work]#
Yalnızca tarayıcı içinde çalışır ve gerçek dosyaları sıkıştırmaz. Sıkıştırma oranları ölçülmüş değerlerdir; simülatörde yeni oluşturulan dosyalar için tahmini değerlerdir. ↑↓ ile daha önce yazdığınız komutları geri çağırırsınız.

🔢 SSS & önerilen içerikler

gzip ile sıkıştırılmış bir .gz dosyası unzip ile açılınca [End-of-central-directory signature not found] ile bitti. [gzip -d readme.txt.gz] ile açılınca readme.txt.gz yeniden readme.txt oldu. Birden çok dosyanın tar ile paketlenip gzip ile sıkıştırıldığı .tar.gz ise tar ile tek seferde açılır.

Kontrol edilen AlmaLinux 9 sunucusunda zip ve unzip, sırasıyla zip ve unzip paketlerinin kurduğu komutlardı. Bu yüzden RHEL tabanlı sistemlerde [sudo dnf install zip unzip], Debian tabanlı sistemlerde [sudo apt install zip unzip] ile kurulur (resmî Debian paket listesine göre).

unzip -p'den sonra zip dosyasını ve içindeki yolu yazarsanız içerik doğrudan ekrana gelir. [unzip -p site.zip site/.htaccess] çalıştırıldığında dosya oluşmadan yalnızca .htaccess'in iki satırı çıktı.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 9   +   8   =