Açık Kaynak İşletim Sistemleri

9 - Dosya Arşivleme ve Sıkıştırma

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2026

Arşivleme ve Sıkıştırma Aynı Şey Değildir

Arşivleme, birden fazla dosyayı ve dizini tek bir dosyada toplamaktır.

ProjeA/  ->  projeA.tar

Sıkıştırma, verinin daha az yer kaplayacak biçimde kodlanmasıdır.

projeA.tar  ->  projeA.tar.gz

Tip

tar arşiv oluşturur. gzip gibi araçlar ise sıkıştırma yapar.

İşlem Akışı

Dosyaları önce tek arşivde toplarız, sonra gerekirse sıkıştırırız.

+-----------+        tar         +------------+       gzip       +----------------+
| ProjeA/   |  --------------->  | projeA.tar |  ------------->  | projeA.tar.gz  |
+-----------+                    +------------+                  +----------------+
 Dosyalar                         Arşiv dosyası                  Sıkıştırılmış
 ve dizinler                                                       arşiv

.tar.gz uzantısı iki bilgiyi birlikte verir:

  • .tar: Dosyalar tek arşivde toplanmıştır.
  • .gz: Bu arşiv gzip ile sıkıştırılmıştır.

Nerede Kullanılır?

Arşivleme ve sıkıştırma günlük sistem kullanımında sık karşılaşılan işlemlerdir.

Örnek durumlar:

  • Bir proje dizinini tek dosya halinde taşımak
  • Yedek almak
  • Sunucuya dosya göndermek
  • Çok sayıda dosyayı düzenli biçimde paylaşmak
  • Dosya boyutunu küçültmek
  • Log dosyalarını saklamak

Örnek dosya adları:

web-sitesi-yedek.tar.gz
ders-notlari.zip
proje-dosyalari.tar.gz

Dersin Temel Odağı

Bu derste özellikle şu işlemleri yapabilmek hedeflenir:

İhtiyaç Kullanılacak araç
Bir dizini tek dosya yapmak tar
Arşivi sıkıştırmak tar.gz
Arşivin içeriğini açmadan görmek tar -tf
Arşivi güvenli biçimde farklı dizine açmak tar -xvf -C
Windows kullanıcılarıyla dosya paylaşmak zip / unzip
Bazı dosyaları arşive koymamak --exclude

Note

Amaç çok sayıda komut ezberlemek değil, temel kullanım mantığını oturtmaktır.

Örnek Çalışma Dizini

Ders boyunca aşağıdaki gibi bir proje dizini üzerinden ilerleyelim:

cezmi@ubuntu:~$ tree Belgeler/ProjeA
Belgeler/ProjeA
├── ana_kod.py
├── belgeler
   └── README.md
└── loglar
    └── calisma.log

Bu dizinde:

  • Bir kaynak kod dosyası vardır.
  • Bir belge dosyası vardır.
  • Bir log dosyası vardır.

loglar/calisma.log dosyası daha sonra hariç tutma örneğinde kullanılacaktır.

tar Komutu Ne Yapar?

tar, dosya ve dizinleri tek bir arşiv dosyası içinde toplar.

Temel kullanım:

tar -cvf projeA.tar ProjeA/

Buradaki seçenekler:

Seçenek Anlamı Açıklama
-c create Yeni arşiv oluşturur
-v verbose İşlem yapılan dosyaları ekrana yazar
-f file Arşiv dosyasının adını belirtir

Note

-f seçeneğinden hemen sonra arşiv dosyasının adı yazılır.

tar ile Arşiv Oluşturma

Önce Belgeler dizinine geçelim:

cd ~/Belgeler

Sonra ProjeA/ dizinini arşivleyelim:

tar -cvf projeA.tar ProjeA/

Örnek çıktı:

ProjeA/
ProjeA/ana_kod.py
ProjeA/belgeler/
ProjeA/belgeler/README.md
ProjeA/loglar/
ProjeA/loglar/calisma.log

Oluşan dosyayı kontrol edelim:

ls -lh

Mikro Uygulama 1

Aşağıdaki adımları terminalde uygulayın:

  1. Belgeler altında ProjeA adlı bir dizin oluşturun.
  2. İçine birkaç dosya ve alt dizin ekleyin.
  3. ProjeA/ dizinini projeA.tar olarak arşivleyin.
  4. Oluşan arşiv dosyasını ls -lh ile kontrol edin.

Kullanılacak temel komut:

tar -cvf projeA.tar ProjeA/

Tip

Burada amaç önce sıkıştırma yapmadan yalnızca arşivleme mantığını görmektir.

Arşiv İçeriğini Açmadan Listeleme

Bir arşivin içinde ne olduğunu görmek için -t seçeneği kullanılır.

tar -tf projeA.tar

Örnek çıktı:

ProjeA/
ProjeA/ana_kod.py
ProjeA/belgeler/
ProjeA/belgeler/README.md
ProjeA/loglar/
ProjeA/loglar/calisma.log

Daha ayrıntılı listelemek için:

tar -tvf projeA.tar

Note

Bir arşivi açmadan önce içeriğini listelemek iyi bir alışkanlıktır.

Arşivi Açma

Arşivi mevcut dizine açmak için -x seçeneği kullanılır.

tar -xvf projeA.tar

Seçenekler:

Seçenek Anlamı
-x Arşivden çıkar
-v Çıkarılan dosyaları göster
-f Açılacak arşiv dosyasını belirt

Warning

Aynı isimli dosyalar varsa tar bu dosyaların üzerine yazabilir. Bu nedenle bilinmeyen arşivler dikkatli açılmalıdır.

Arşivi Farklı Dizine Açma: -C

Arşivi doğrudan mevcut dizine açmak yerine farklı bir dizine açmak daha kontrollüdür.

Önce hedef dizini oluşturalım:

mkdir -p /tmp/projeA-deneme

Arşivi bu dizine açalım:

tar -xvf projeA.tar -C /tmp/projeA-deneme

Sonucu kontrol edelim:

ls /tmp/projeA-deneme

Tip

-C ile verilen hedef dizin önceden var olmalıdır.

Güvenli Açma Alışkanlığı

Bilinmeyen bir arşivle karşılaşıldığında doğrudan açmak yerine şu sıra izlenebilir:

  1. İçeriği listele.
  2. Boş bir geçici dizin oluştur.
  3. Arşivi oraya aç.
  4. Sonucu kontrol et.
tar -tf arsiv.tar

mkdir -p /tmp/arsiv-kontrol

tar -xvf arsiv.tar -C /tmp/arsiv-kontrol

Tar Bombası Uyarısı

Bazı arşivler açıldığında dosyaları tek bir üst dizin altında toplamak yerine doğrudan mevcut dizine dağıtabilir. Bu yüzden güvenilmeyen arşivler önce boş bir geçici dizinde açılmalıdır.

Mevcut Dosyaları Korumak

Arşiv açılırken aynı isimli dosyalar varsa üzerine yazma riski vardır.

Bunu azaltmak için:

tar --keep-old-files -xvf arsiv.tar

Bu seçenek, mevcut dosyaların üzerine yazmamaya çalışır.

Yine de en güvenli alışkanlık şudur:

mkdir -p /tmp/arsiv-deneme
tar -xvf arsiv.tar -C /tmp/arsiv-deneme

Note

Önce ayrı bir dizinde denemek, yanlışlıkla dosya kaybetme riskini azaltır.

Sıkıştırılmış Arşiv Oluşturma: .tar.gz

Bir dizini hem arşivlemek hem de sıkıştırmak için tar komutuna -z seçeneği eklenir.

tar -czvf projeA.tar.gz ProjeA/

Buradaki seçenekler:

Seçenek Anlamı
-c Arşiv oluştur
-z gzip ile sıkıştır
-v İşlem yapılan dosyaları göster
-f Arşiv dosyasının adını belirt

Oluşan dosya:

projeA.tar.gz

Tip

Linux dünyasında .tar.gz oldukça yaygın bir arşiv biçimidir.

.tar ve .tar.gz Karşılaştırması

Aynı dizini iki farklı biçimde arşivleyelim:

tar -cvf projeA.tar ProjeA/
tar -czvf projeA.tar.gz ProjeA/

Boyutları karşılaştıralım:

ls -lh projeA.tar projeA.tar.gz

Beklenen sonuç:

projeA.tar     -> daha büyük olabilir
projeA.tar.gz  -> sıkıştırıldığı için daha küçük olabilir

Note

Bu iki komut birbirinin yerine geçmez. İkinci komut, ilk dosyanın uzantısını değiştirmez; dizinde yeni bir projeA.tar.gz dosyası oluşturur.

Sıkıştırılmış Arşivi Listeleme ve Açma

Sıkıştırılmış arşivin içeriğini açmadan listeleyebiliriz:

tar -tf projeA.tar.gz

Arşivi açmak için:

tar -xvf projeA.tar.gz

Farklı dizine açmak için:

mkdir -p /tmp/projeA-gz-deneme
tar -xvf projeA.tar.gz -C /tmp/projeA-gz-deneme

Tip

Modern tar sürümleri .tar.gz dosyasını çoğu zaman otomatik olarak tanır. Bu nedenle açarken ayrıca -z yazmak genellikle gerekmez.

Mikro Uygulama 2

Aşağıdaki işlemleri uygulayın:

  1. ProjeA/ dizininden projeA.tar oluşturun.
  2. Aynı dizinden projeA.tar.gz oluşturun.
  3. İki dosyanın boyutunu karşılaştırın.
  4. .tar.gz arşivinin içeriğini açmadan listeleyin.
  5. .tar.gz arşivini /tmp altında yeni bir dizine açın.

Kullanılacak temel komutlar:

tar -cvf projeA.tar ProjeA/
tar -czvf projeA.tar.gz ProjeA/
ls -lh projeA.tar projeA.tar.gz
tar -tf projeA.tar.gz
mkdir -p /tmp/projeA-gz-deneme
tar -xvf projeA.tar.gz -C /tmp/projeA-gz-deneme

Dosya ve Dizin Hariç Tutma: --exclude

Bazı dosyaları arşive dahil etmek istemeyebiliriz.

Örnek olarak şunlar arşive alınmayabilir:

  • Log dosyaları
  • Geçici dosyalar
  • .git dizini
  • Derleme çıktıları

Örnek:

tar -czvf projeA-temiz.tar.gz \
  --exclude='*.log' \
  ProjeA/

Arşivin içeriğini kontrol edelim:

tar -tf projeA-temiz.tar.gz

Note

--exclude='*.log', .log uzantılı dosyaları arşive dahil etmez.

zip ve unzip Ne Zaman Kullanılır?

.zip formatı özellikle Windows kullanıcılarıyla dosya paylaşırken pratik bir seçenektir.

Dizinleri zip arşivine eklemek için -r gerekir:

zip -r projeA.zip ProjeA/

Arşiv içeriğini listelemek için:

unzip -l projeA.zip

Arşivi açmak için:

unzip projeA.zip

Farklı dizine açmak için:

unzip projeA.zip -d /tmp/projeA-zip-deneme

Tip

Linux sistemleri arasında proje veya yedek taşırken .tar.gz; Windows ile paylaşımda .zip daha pratik olabilir.

Mikro Uygulama 3

Aşağıdaki işlemleri uygulayın:

  1. ProjeA/ dizinini zip ile arşivleyin.
  2. Zip arşivinin içeriğini açmadan listeleyin.
  3. Zip arşivini /tmp altında yeni bir dizine açın.
  4. .tar.gz ve .zip dosya boyutlarını karşılaştırın.

Kullanılacak temel komutlar:

zip -r projeA.zip ProjeA/

unzip -l projeA.zip

mkdir -p /tmp/projeA-zip-deneme
unzip projeA.zip -d /tmp/projeA-zip-deneme

ls -lh projeA.tar.gz projeA.zip

Hangi Durumda Hangisi?

İhtiyaç Uygun seçenek
Linux sistemleri arasında proje taşımak .tar.gz
Sunucu yedeği almak .tar.gz
Windows kullanıcılarıyla paylaşmak .zip
Arşivi açmadan içeriğini görmek tar -tf, unzip -l
Arşivi güvenli biçimde denemek -C ile geçici dizin
Bazı dosyaları dışarıda bırakmak --exclude

Note

Bu derste temel kullanım için en önemli iki biçim .tar.gz ve .zip olarak düşünülebilir.

Kısa Not: Diğer Arşiv ve Sıkıştırma Biçimleri

Gerçek sistemlerde başka biçimlerle de karşılaşabilirsiniz.

Biçim / araç Kısa açıklama
.tar.xz Genellikle daha küçük arşiv üretir; sıkıştırma daha yavaş olabilir
.tar.zst Modern ve hızlı bir seçenektir
.7z Yüksek sıkıştırma ve parola koruma seçenekleri sunar
gpg Hassas arşivleri ayrıca şifrelemek için kullanılabilir

Bu araçlar bu dersin ana konusu değildir.

Tip

Temel kullanım oturduktan sonra .tar.xz, .tar.zst, 7z ve gpg gibi araçlar daha kolay öğrenilir.

Yaygın Hatalar

Hata Olası neden Çözüm
Arşiv oluşturulmuyor Kaynak dizin yazılmamıştır Komutun sonuna dizin adını ekleyin
Zip dosyasında dizin içeriği yok -r unutulmuştur zip -r arsiv.zip Dizin/ kullanın
Arşiv yanlış yere açıldı Mevcut dizin kontrol edilmemiştir Önce pwd ve ls ile konumu kontrol edin
Dosyaların üzerine yazıldı Arşiv mevcut dizinde açılmıştır Önce geçici dizinde deneyin
Arşiv beklenenden büyük Sıkıştırma yapılmamıştır .tar.gz kullanın
Log dosyaları da arşive girdi --exclude kullanılmamıştır --exclude='*.log' ekleyin

Senaryo: Projeyi Göndermeye Hazırlama

ProjeA/ dizini başka bir bilgisayara gönderilecek.
Log dosyaları gönderilmeyecek.
Arşiv açılmadan önce içeriği kontrol edilecek.
Arşiv önce geçici bir dizinde denenecek.

Uygun işlem sırası:

tar -czvf projeA-gonderilecek.tar.gz \
  --exclude='*.log' \
  ProjeA/

tar -tf projeA-gonderilecek.tar.gz

mkdir -p /tmp/projeA-kontrol

tar -xvf projeA-gonderilecek.tar.gz -C /tmp/projeA-kontrol

Bu örnekte üç temel alışkanlık birlikte kullanılır:

  • Gereksiz dosyayı dışarıda bırakmak
  • Arşivi açmadan kontrol etmek
  • Arşivi önce güvenli bir yerde denemek

Mini Kontrol Soruları

  1. .tar ile .tar.gz arasındaki fark nedir?

  2. Aşağıdaki komut ne yapar?

tar -tf projeA.tar.gz
  1. Aşağıdaki komutta -C ne işe yarar?
tar -xvf projeA.tar.gz -C /tmp/projeA
  1. Güvenilmeyen bir arşiv neden doğrudan mevcut dizinde açılmamalıdır?

Sınıf İçi Uygulama

Aşağıdaki görevi tek bir senaryo olarak tamamlayın:

  1. ProjeA/ adlı bir dizin oluşturun.
  2. İçine en az üç dosya ve bir alt dizin ekleyin.
  3. Bir .log dosyası oluşturun.
  4. .log dosyasını hariç tutarak .tar.gz arşivi oluşturun.
  5. Arşivin içeriğini açmadan listeleyin.
  6. Arşivi /tmp altında yeni bir dizine açın.
  7. Aynı dizini .zip olarak da arşivleyin.
  8. .tar.gz ve .zip dosyalarının boyutlarını karşılaştırın.

Özet: Temel Komutlar

Komut Açıklama
tar -cvf arsiv.tar Dizin/ Dizin veya dosyaları .tar arşivine toplar
tar -tf arsiv.tar Arşiv içeriğini açmadan listeler
tar -xvf arsiv.tar Arşivi mevcut dizine açar
tar -xvf arsiv.tar -C /hedef Arşivi belirtilen dizine açar
tar -czvf arsiv.tar.gz Dizin/ gzip ile sıkıştırılmış arşiv oluşturur
tar -tf arsiv.tar.gz Sıkıştırılmış arşivin içeriğini listeler
tar --exclude='*.log' -czvf arsiv.tar.gz Dizin/ Belirli dosyaları hariç tutarak arşiv oluşturur
zip -r arsiv.zip Dizin/ Dizin içeriğini .zip arşivine ekler
unzip -l arsiv.zip Zip arşivinin içeriğini listeler
unzip arsiv.zip -d /hedef Zip arşivini belirtilen dizine açar

Kapanış

Bu derste temel olarak şu akış öğrenildi:

Dizin oluştur
      |
      v
tar ile arşivle
      |
      v
gerekirse gzip ile sıkıştır
      |
      v
açmadan önce listele
      |
      v
geçici dizinde güvenli biçimde aç

En temel iki kullanım:

tar -czvf projeA.tar.gz ProjeA/
tar -xvf projeA.tar.gz -C /tmp/projeA-deneme

Tip

Komutları ezberlemekten çok işlem sırasını anlamak daha önemlidir: oluştur, kontrol et, güvenli yerde aç.