9 - Dosya Arşivleme ve Sıkıştırma
2026
Arşivleme, birden fazla dosyayı ve dizini tek bir dosyada toplamaktır.
Sıkıştırma, verinin daha az yer kaplayacak biçimde kodlanmasıdır.
Tip
tar arşiv oluşturur. gzip gibi araçlar ise sıkıştırma yapar.
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.Arşivleme ve sıkıştırma günlük sistem kullanımında sık karşılaşılan işlemlerdir.
Örnek durumlar:
Örnek dosya adları:
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.
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.logBu dizinde:
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:
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:
Sonra ProjeA/ dizinini arşivleyelim:
Örnek çıktı:
ProjeA/
ProjeA/ana_kod.py
ProjeA/belgeler/
ProjeA/belgeler/README.md
ProjeA/loglar/
ProjeA/loglar/calisma.logOluşan dosyayı kontrol edelim:
Aşağıdaki adımları terminalde uygulayın:
Belgeler altında ProjeA adlı bir dizin oluşturun.ProjeA/ dizinini projeA.tar olarak arşivleyin.ls -lh ile kontrol edin.Kullanılacak temel komut:
Tip
Burada amaç önce sıkıştırma yapmadan yalnızca arşivleme mantığını görmektir.
Bir arşivin içinde ne olduğunu görmek için -t seçeneği kullanılır.
Örnek çıktı:
ProjeA/
ProjeA/ana_kod.py
ProjeA/belgeler/
ProjeA/belgeler/README.md
ProjeA/loglar/
ProjeA/loglar/calisma.logDaha ayrıntılı listelemek için:
Note
Bir arşivi açmadan önce içeriğini listelemek iyi bir alışkanlıktır.
Arşivi mevcut dizine açmak için -x seçeneği kullanılır.
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.
-CArşivi doğrudan mevcut dizine açmak yerine farklı bir dizine açmak daha kontrollüdür.
Önce hedef dizini oluşturalım:
Arşivi bu dizine açalım:
Sonucu kontrol edelim:
Tip
-C ile verilen hedef dizin önceden var olmalıdır.
Bilinmeyen bir arşivle karşılaşıldığında doğrudan açmak yerine şu sıra izlenebilir:
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.
Arşiv açılırken aynı isimli dosyalar varsa üzerine yazma riski vardır.
Bunu azaltmak için:
Bu seçenek, mevcut dosyaların üzerine yazmamaya çalışır.
Yine de en güvenli alışkanlık şudur:
Note
Önce ayrı bir dizinde denemek, yanlışlıkla dosya kaybetme riskini azaltır.
.tar.gzBir dizini hem arşivlemek hem de sıkıştırmak için tar komutuna -z seçeneği eklenir.
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:
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:
Boyutları karşılaştıralım:
Beklenen sonuç:
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şivin içeriğini açmadan listeleyebiliriz:
Arşivi açmak için:
Farklı dizine açmak için:
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.
Aşağıdaki işlemleri uygulayın:
ProjeA/ dizininden projeA.tar oluşturun.projeA.tar.gz oluşturun..tar.gz arşivinin içeriğini açmadan listeleyin..tar.gz arşivini /tmp altında yeni bir dizine açın.Kullanılacak temel komutlar:
--excludeBazı dosyaları arşive dahil etmek istemeyebiliriz.
Örnek olarak şunlar arşive alınmayabilir:
.git diziniÖrnek:
Arşivin içeriğini kontrol edelim:
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:
Arşiv içeriğini listelemek için:
Arşivi açmak için:
Farklı dizine açmak için:
Tip
Linux sistemleri arasında proje veya yedek taşırken .tar.gz; Windows ile paylaşımda .zip daha pratik olabilir.
Aşağıdaki işlemleri uygulayın:
ProjeA/ dizinini zip ile arşivleyin./tmp altında yeni bir dizine açın..tar.gz ve .zip dosya boyutlarını karşılaştırın.Kullanılacak temel komutlar:
| İ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.
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.
| 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 |
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-kontrolBu örnekte üç temel alışkanlık birlikte kullanılır:
.tar ile .tar.gz arasındaki fark nedir?
Aşağıdaki komut ne yapar?
-C ne işe yarar?Aşağıdaki görevi tek bir senaryo olarak tamamlayın:
ProjeA/ adlı bir dizin oluşturun..log dosyası oluşturun..log dosyasını hariç tutarak .tar.gz arşivi oluşturun./tmp altında yeni bir dizine açın..zip olarak da arşivleyin..tar.gz ve .zip dosyalarının boyutlarını karşılaştırın.| 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 |
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:
Tip
Komutları ezberlemekten çok işlem sırasını anlamak daha önemlidir: oluştur, kontrol et, güvenli yerde aç.