gzip: Linux'ta dosya sıkıştırma, gzip açma, gunzip ve zcat kullanımı

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabı2026-11-05 tarihinde kontrol edildi
Sıkıştırma · arşivleme komutlarıgzipgunzipzcatKonum/usr/bin/gzip
Linux'ta dosya sıkıştırma ve gzip açma

gzip, Linux'ta tek bir dosyayı .gz dosyasına sıkıştıran komuttur; açmak için aynı komuta -d eklersiniz ya da gunzip kullanırsınız. Bir AlmaLinux 9 sunucusunda 31.878 baytlık erişim günlüğü sıkıştırılınca 4.424 bayta indi, açıldığında ise özgün boyut ve değiştirme zamanı aynen geri geldi.

Aşağıdaki çıktılar bir AlmaLinux 9.8 sunucusunda root hesabıyla bir test klasöründe çalıştırılan sonuçlardır ve saatler UTC'dir. Erişim günlükleri, notlar ve yapılandırma dosyaları test için oluşturulmuş örnek dosyalardır; günlüklerdeki IP adresleri de belgeler için örnek değerlerdir.

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

  • ↪️ Dosyayı sıkıştırma ve özgün dosyayı koruma (-k)

Test klasöründe iki erişim günlüğü, iki not dosyası, yapılandırma dosyalarının bulunduğu config klasörü ve boş bir restore klasörü var.

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

gzip'in arkasına bir dosya adı yazdığınızda o dosya, adının sonuna .gz eklenmiş sıkıştırılmış bir dosyaya dönüşür. access.log'u sıkıştıran aşağıdaki komut bittiğinde ayrıca bir şey yazdırmaz.

gzip access.log

Sıkıştırmadan sonra ls -l ile bakınca access.log yoktur, yalnızca access.log.gz kalır. 31.878 baytlık günlük 4.424 bayt oldu ve değiştirme zamanı özgün dosyanınkiyle aynı kaldı.

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

-v eklerseniz her dosya için küçülme oranı ve yeni dosya adı gösterilir. readme.txt satırındaki [81.5%] özgün boyuta göre küçülme oranıdır, [replaced with] ise özgün dosyanın .gz dosyasıyla değiştirildiği anlamına gelir.

gzip -v readme.txt
readme.txt:	 81.5% -- replaced with readme.txt.gz

Özgün dosyayı korumak için -k ekleyin. memo.txt'yi -k ile sıkıştırırsanız memo.txt ve memo.txt.gz yan yana kalır.

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

45 baytlık memo.txt sıkıştırmadan sonra tersine 71 bayta çıktı. Resmî kılavuza göre gzip, sonuç özgün dosyadan büyük olsa da sıkıştırır ve sıkıştırılmış dosyanın içine özgün dosya adını ve zamanını birlikte kaydeder.

Birden çok dosyayı aynı anda yazarsanız her dosya için ayrı bir .gz dosyası oluşur. config klasöründeki iki yapılandırma dosyasını sıkıştırınca app.conf.gz ve site.conf.gz adlı iki dosya oluşur.

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️⃣ gzip açma

  • ↪️ gzip -d ve gunzip, başka klasöre açma (-c)

Sıkıştırılmış access.log.gz'yi -d ile açınca çıktı olmadan access.log yeniden oluşur ve access.log.gz kalmaz.

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

Geri gelen access.log 31.878 bayttır ve değiştirme zamanı da sıkıştırmadan önceki gibi Oct 28 23:50'dir.

gunzip, gzip -d ile aynı işi yapan komuttur. -k ile birlikte kullanılırsa sıkıştırılmış dosyayı koruyarak açar; -v satırındaki [created], .gz dosyası silinmeden yeni dosya oluşturulduğu anlamına gelir.

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'te açılacak klasörü belirleyen bir seçenek yoktur; başka bir klasöre açmak için -c ile açılan içeriği standart çıktıya gönderir ve [>] işaretinden sonra yeni dosyanın yolunu yazarsınız. Aşağıdaki komut memo.txt.gz'yi restore klasöründeki memo.txt olarak açar.

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

-c ile açınca memo.txt.gz olduğu gibi kalır. Yeni oluşturulan restore/memo.txt dosyasının değiştirme zamanı, dosyanın oluşturulduğu Oct 29 00:19'dur.

3️⃣ gzip komutu seçenekleri

  • ↪️ -l, -t, sıkıştırma düzeyi, -r

-l, sıkıştırılmış dosyayı açmadan sıkıştırılmış boyutu, özgün boyutu, küçülme oranını ve açıldığında alacağı adı tek satırda yazdırır. access.log'u -k ile yeniden sıkıştırıp -l ile bakınca sonuç aşağıdaki gibidir.

gzip -k access.log
gzip -l access.log.gz
         compressed        uncompressed  ratio uncompressed_name
               4424               31878  86.2% access.log

-v de eklenirse başa sıkıştırma yöntemi (deflate kısaltması defla), özgün verinin CRC değeri ve özgün dosyanın tarihi ile saati eklenir.

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 yalnızca sıkıştırılmış dosyanın bozulup bozulmadığını denetler ve biter. -v ile birlikte kullanılırsa sorunsuz her dosyanın arkasında [OK] çıkar.

gzip -tv access.log.gz
access.log.gz:	 OK

-1'den -9'a kadarki sayılar sıkıştırma düzeyidir ve resmî kılavuza göre varsayılan -6'dır. Aynı access.log -c ile üç kez sıkıştırılıp boyutlar wc -c ile karşılaştırıldı.

gzip -c -1 access.log | wc -c
5564
gzip -c -6 access.log | wc -c
4424
gzip -c -9 access.log | wc -c
4164
Sıkıştırma düzeyi.gz boyutuÖzgün boyuta oranı
Özgün dosya (access.log)31.878 bayt100%
-1 (en hızlı)5.564 bayt17.5%
-6 (varsayılan)4.424 bayt13.9%
-9 (en küçük)4.164 bayt13.1%

-9 varsayılandan 260 bayt küçük, -1 ise varsayılandan 1.140 bayt büyük çıktı.

Yalnızca klasör adını yazarsanız [is a directory -- ignored] çıkar ve klasör atlanır.

gunzip config
gzip: config is a directory -- ignored

Bir klasördeki tüm dosyaları işlemek için -r ekleyin. İki yapılandırma dosyasının sıkıştırıldığı config klasörünü gunzip -r ile açınca iki dosya sırayla açılır.

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, klasördeki dosyaları tek tek ayrı ayrı sıkıştırır ya da açar; birden çok dosyayı tek dosyada toplamaz. Bir klasörü tek bir sıkıştırılmış dosya yapmak için tar komutu ile paketleyip aynı anda sıkıştırın. config klasörünü tar -czf ile sıkıştırınca klasör ve iki dosya tek bir config.tar.gz içine girer.

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

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

SeçenekGörevBu yazıdaki sonuç
-cSonucu standart çıktıya gönderir ve özgün dosyayı olduğu gibi bırakır-dc çıktısını restore/memo.txt'ye yönlendirince 45 baytlık memo.txt oluştu
-dAçma (gunzip ile aynı)access.log.gz kayboldu ve 31878 baytlık access.log geri geldi
-kSıkıştırdıktan ya da açtıktan sonra özgün dosyayı korurmemo.txt (45 bayt) ve memo.txt.gz (71 bayt) yan yana kaldı
-vHer dosya için küçülme oranını ve yeni dosya adını yazdırırreadme.txt: 81.5% -- replaced with readme.txt.gz
-lSıkıştırılmış dosyaların boyutunu, oranını ve açılınca alacağı adı liste olarak yazdırırSıkıştırılmış boyut 4424, özgün boyut 31878, oran 86.2%, ad access.log
-tSıkıştırılmış dosyanın bozulup bozulmadığını denetler-tv ile access.log.gz: OK, sonu kesilmiş broken.gz için unexpected end of file
-rKlasördeki tüm dosyaları sıkıştırır ya da açarTek bir gunzip -rv config ile config/app.conf.gz ve config/site.conf.gz açıldı
-fAynı adlı dosya olsa da sormadan üzerine yazarSorulmadan üzerine yazıldı; memo.txt yok, yalnızca memo.txt.gz (71 bayt) kaldı
-1 ~ -9Sıkıştırma düzeyi (-1 en hızlı, -9 en küçük, varsayılan -6)-1, -6 ve -9 ile sıkıştırılan çıktılar wc -c ile sayıldı: 5564, 4424, 4164

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

SeçenekGörev
-NSıkıştırırken özgün dosya adını ve zamanını kaydeder (sıkıştırmada varsayılan), açarken kaydedilen ad ve zamanla geri getirir
-nSıkıştırırken özgün dosya adını ve zamanını kaydetmez, açarken yalnızca .gz atılmış adı kullanır (açmada varsayılan)
-qHiçbir uyarıyı yazdırmaz
-S sonek.gz yerine belirtilen soneki ekleyerek sıkıştırır, açarken önce o soneki arar
--rsyncableSıkıştırılmış dosyalar rsync ile başka bir sunucuyla eşitlenirken yalnızca değişen kısımlar gönderilecek biçimde sıkıştırır

🔲 gzip komutu simülatörü

Aşağıdaki simülatörde gzip ile sıkıştırma, açma ve zcat ile zgrep kullanarak içeriği görme adımlarını kendiniz yazarak deneyebilirsiniz.

gzip komutu simülatörügzip 1.12
[root@server work]#
Yalnızca tarayıcıda çalışır ve gerçek dosyaları sıkıştırmaz. Sıkıştırılmış boyutlar ölçülmüş değerlerdir, simülatörde yeni oluşturulan içerik için tahmini değerler kullanılır. ↑↓ ile önceki komutları geri çağırabilirsiniz.

4️⃣ gzip dosyasının içeriğini görme

  • ↪️ zcat · zgrep

Tarihle saklanan eski günlükler gzip ile sıkıştırılırsa daha az yer kaplar. Aşağıdaki komut bir önceki günün günlüğü olan access.log-20261027'yi sıkıştırır.

gzip access.log-20261027

Sıkıştırılmış günlüğü açmadan zcat ile ekrana yazdırırsınız. zcat, gunzip -c ile aynı komut olduğundan (resmî kılavuza göre) .gz dosyası olduğu gibi kalır.

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

zcat çıktısı boru ile başka komutlara aktarılabilir; wc -l ile sayınca bu günlük 600 satırdır.

zcat access.log-20261027.gz | wc -l
600

Sıkıştırılmış günlükte belirli bir metni aramak için zgrep kullanılır. -c eklenirse yalnızca [ 404 ] içeren satırların sayısı çıkar; satırların kendisini görmek için -c olmadan çalıştırın.

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

zcat sıkıştırılmamış bir dosya alınca [not in gzip format] yazdırır ve durur.

zcat access.log | head -1

gzip: access.log: not in gzip format

zgrep sıkıştırılmamış dosyaları da olduğu gibi okur; böylece şu an kullanılan günlükle sıkıştırılmış eski günlüklerde bir kerede arama yapabilirsiniz. İki veya daha fazla dosya yazarsanız satır sayısının önüne dosya adı eklenir.

zgrep -c wp-login.php access.log access.log-20261027.gz
access.log:36
access.log-20261027.gz:52

5️⃣ gzip hataları

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

Zaten .gz ile biten bir dosyayı yeniden sıkıştırırsanız [already has .gz suffix -- unchanged] çıkar ve dosya olduğu gibi kalır.

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

Tersine, .gz ile bitmeyen bir dosyayı -d ile açarsanız [unknown suffix -- ignored] çıkar.

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

Yalnızca adı .gz olan ama gzip ile sıkıştırılmamış dosya [not in gzip format] ile biter. Metin dosyası memo.txt, notgzip.gz adıyla kopyalanıp açılınca bu ileti çıktı.

cp memo.txt notgzip.gz
gzip -d notgzip.gz

gzip: notgzip.gz: not in gzip format

İndirme yarıda kesildiği için sonu eksik kalan .gz dosyası [unexpected end of file] ile biter. Sıkıştırılmış eski bir günlüğün yalnızca ilk 2.000 baytını içeren broken.gz -t ile denetlendiğinde sonuç budur.

head -c 2000 access.log-20261027.gz > broken.gz
gzip -t broken.gz

gzip: broken.gz: unexpected end of file

Kesilmiş bir dosyada bile zcat ile açarak kesildiği yere kadarki içeriği çıkarabilirsiniz. 600 satırlık günlükten 162 satır restore/broken.log içinde kaldı; resmî kılavuz da bozuk sıkıştırılmış dosyanın baş kısmını zcat ile kurtarmayı önerir.

zcat broken.gz > restore/broken.log
wc -l restore/broken.log

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

Oluşturulacak .gz dosyasıyla aynı adlı bir dosya zaten varsa gzip üzerine yazıp yazmayacağını sorar. n yazarsanız [not overwritten] ile hiçbir şeyi değiştirmeden biter.

gzip memo.txt
gzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
	not overwritten

-f eklerseniz sormadan hemen üzerine yazar. -k eklenmediği için memo.txt kaybolur, yalnızca memo.txt.gz kalır.

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

Sıkıştırmayla uğraşırken çıkan hata iletileri ve ardından denetlenecekler aşağıdaki gibidir.

ÇıktıAnlamıSonra kontrol edilecek
already has .gz suffix -- unchangedDosya zaten .gz ile bittiği için yeniden sıkıştırılmazSıkıştırılacak özgün dosyanın adını yazdınız mı
unknown suffix -- ignored.gz ile bitmeyen bir dosya açılmaya çalışıldıls ile .gz dosyasının adı
not in gzip formatAdı .gz ama gzip ile sıkıştırılmış dosya değilGerçek biçim (zip, tar) ve ona uygun komut
unexpected end of fileSıkıştırılmış dosyanın sonu kesilmişBoyutu özgünle karşılaştırıp yeniden indirme · zcat ile baş kısmı kurtarma
already exists; do you wish to overwriteOluşturulacak dosyayla aynı adlı bir dosya zaten varÜzerine yazılabilirse y ya da -f · korumak için -c ile başka ad
is a directory -- ignoredDosya yerine klasör adı yazıldıKlasördeki dosyalar için -r · tek dosyada toplamak için tar

🔢 SSS & önerilen içerikler

config klasörü tar ile x.tar olarak paketlenip gzip -v ile sıkıştırıldı, ardından gunzip -v ile açıldı; yalnızca .gz katmanı kalktı ve 10.240 baytlık x.tar kaldı. Paketlenen dosyaları da çıkarmak için tar ile bir kez daha açmanız gerekir. Yeniden sıkıştırılan x.tar.gz, tar -xzf ile restore/t klasörüne açılınca config klasörü ve iki yapılandırma dosyası bir kerede çıktı.

Aynı erişim günlüğü 600 kez art arda eklenerek oluşturulan 28.648.800 baytlık dosya her düzeyde ikişer kez sıkıştırıldı. -1 yaklaşık 0,3 saniyede 4.821.317 bayt, varsayılan -6 yaklaşık 0,65 saniyede 3.625.500 bayt, -9 ise yaklaşık 2,5 saniyede 3.376.224 bayt verdi. -9, -6'dan yaklaşık %7 küçük ama süresi neredeyse dört kat uzun.

gzip sıkıştırırken özgün dosya adını .gz içine birlikte kaydeder. readme.txt.gz, restore klasörüne backup-1.gz olarak kopyalandıktan sonra gzip -lN ile bakınca kaydedilmiş ad readme.txt göründü, gunzip -N ile açınca restore/readme.txt oluştu. -N olmadan açılırsa dosya adından yalnızca .gz atılmış ad kullanılır (resmî kılavuza göre).

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