zip komutu: Klasör sıkıştırma, unzip ile açma ve sıkıştırma seçenekleri
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
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.
-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.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️⃣ zip komutu seçenekleri
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 siteupdating: 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 $?12zip 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 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| Sıkıştırma düzeyi | zip dosya boyutu | Özgün toplama göre |
|---|---|---|
| Özgün dosya toplamı | 35.875 bayt | 100% |
| -0 (sıkıştırma yok) | 37.433 bayt | 104.3% |
| -6 (varsayılan) | 4.179 bayt | 11.6% |
| -9 (en yüksek sıkıştırma) | 3.874 bayt | 10.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.txtEnter 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.zipArchive: secret.zip
Length Date Time Name
--------- ---------- ----- ----
71 10-28-2026 22:10 memo.txt
--------- -------
71 1 fileParolayı 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 decArchive: 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çenek | Görev | Bu yazıdaki sonuç | |
|---|---|---|---|
| zip -r | Klasördeki tüm alt klasörleri ve dosyaları ekler | -r olmadan tek satır adding: site/, -r ile .htaccess dahil on girdi | |
| zip -x | Bir desene uyan dosyaları dışarıda bırakır | site/logs/* çıkarılınca logs klasörü ve access.log olmadan yalnızca sekiz girdi | |
| zip -u | zip dosyası oluşturulduktan sonra değişen dosyaları yeniden ekler | Tek satır updating: site/index.html (deflated 90%), değişen dosya yokken çıktı yok ve çıkış kodu 12 | |
| zip -d | zip dosyasındaki girdileri siler | deleting: site/logs/ ve deleting: site/logs/access.log | |
| zip -q | Sı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 -0 | Sıkıştırmadan yalnızca saklar | level0.zip 37433 bayt, özgün toplamdan büyük | |
| zip -9 | En küçük boyuta sıkıştırır (varsayılan -6) | level9.zip 3874 bayt, varsayılanla oluşturulan level6.zip 4179 bayt | |
| zip -e | Parola sorar ve içeriği şifreler | Enter password: ve Verify password: sorulur, ardından adding: memo.txt (stored 0%) | |
| unzip -l | Açmadan saklanan girdilerin listesini yazdırır | site.zip içinde 10 files, toplam 35825 bayt | |
| unzip -d | Açılacak klasörü belirtir, olmayan klasörü yeni oluşturur | creating: restore/site/ ile başlar ve site klasör yapısı restore altına açılır | |
| unzip -o | Var olan dosyaların üzerine sormadan yazar | Soru olmadan beş inflating satırı | |
| unzip -n | Var olan dosyaları sormadan atlar | Archive: site.zip satırından sonra hiçbir şey çıkmaz | |
| unzip -t | Açmadan sıkıştırılmış veriyi denetler | Her girdi için OK ve No errors detected, kesik broken.zip için End-of-central-directory signature not found | |
| unzip -O | zip 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 -p | Açılan içeriği dosya oluşturmadan standart çıktıya gönderir | Dosya oluşmadan yalnızca .htaccess'in iki satırı çıkar |
📎 Diğer seçenekler: resmî kılavuza göre
| Seçenek | Görev | |
|---|---|---|
| zip -m | Sı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 -j | Klasör yolu olmadan yalnızca dosya adlarını saklar | |
| zip -y | Sembolik bağlantıyı, gösterdiği dosya yerine bağlantı olarak saklar | |
| zip -T | Oluşturulan zip dosyasını denetler, denetim başarısız olursa özgün zip dosyasını değiştirmez | |
| zip -f | Yalnızca zip dosyasında zaten bulunan girdileri değişen dosyalarla değiştirir, yeni dosya eklemez | |
| zip -i | Yalnızca belirtilen desene uyan dosyaları ekler | |
| zip -P | Parolayı doğrudan komut satırına yazar (resmî kılavuz güvenli olmadığı konusunda uyarır) | |
| unzip -j | zip içindeki klasör yapısını oluşturmadan dosyaları tek bir klasöre açar | |
| unzip -x | Açılmayacak girdileri belirtir | |
| unzip -q | Açma sırasında çıkan satırları gizler | |
| unzip -u | Yalnızca diskte olmayan ve daha yeni olan dosyaları açar | |
| unzip -v | Listeye 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 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 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/.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 restoreArchive: site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: NSormadan 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 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.zipTü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 partArchive: site.zip
creating: part/site/css/
inflating: part/site/css/style.css4️⃣ unzip hataları
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.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.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.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, 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.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.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.zipArchive: 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.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/견적서.txtunzip 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 found | zip dosyasının sonundaki dosya listesi bulunamadı — sonu kesik bir dosya ya da zip olmayan bir dosya | Boyutu özgün dosyayla karşılaştırıp yeniden indirme · tar.gz için tar |
| cannot find or open | Bu adda bir dosya bulunduğunuz klasörde yok | ls ile dosya adı ve konumu |
| skipping: … incorrect password | Parola üç 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üşüyor | Adlar 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.
🔢 SSS & önerilen içerikler
WordPress · Eklentiler
WordPress eklentisi kurma: Arayarak kurulum, zip yükleme ve etkinleştirme
Eklenti ekle ekranında resmî dizinde arama yaparak ya da bir zip dosyası yükleyerek eklenti kurma adımları.
Ara
Linux find komutu
Ad, uzantı, boyut ve tarih gibi koşullarla dosya bulan ve bulduğu dosyalarla işlemi sürdüren find komutu.
Dosya yönetimi
cp komutu seçenekleri ve çalıştırırken toplu üzerine yazma ayarı
Dosya ve dizin kopyalayan cp komutunun seçenekleri ve üzerine yazma onayı olmadan toplu kopyalama yöntemi.
ℹ️ 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.