Linux sistemlerinde veri yedekleme, dağıtım paketleri hazırlama veya birden fazla dosyayı tek bir arşivde toplayıp disk alanından tasarruf etme aşamalarında Linux tar ve gzip araçları standart çözümdür. Linux dünyasında sıklıkla bir arada kullanılan bu iki terim aslında iki farklı görevi temsil eder: Arşivleme ve Sıkıştırma.
- Arşivleme (
tar– Tape Archive): Yüzlerce dosya ve dizini, izin ve zaman damgalarını koruyarak tek bir büyük dosya (.tar) haline getirir ancak boyutunu küçültmez. - Sıkıştırma (
gzip,bzip2,xz): Tek bir dosyanın boyutunu matematiksel algoritmalarla sıkıştırır (.gz).
Bu iki işlem birleştiğinde ortaya Linux ekosisteminin simgesi olan .tar.gz (veya .tgz) dosyaları çıkar. Bu rehberde tar ve gzip komutlarını günlük hayatta işinizi kolaylaştıracak tüm varyasyonlarıyla ele alıyoruz.
Temel tar Parametreleri Nelerdir?
tar komutunu ezberlemeden anlamanın en kolay yolu temel işlem bayraklarını bilmektir:
-c(create): Yeni bir arşiv dosyası oluşturur.-x(extract): Var olan bir arşivi dışarı çıkartır (açar).-v(verbose): İşlem sırasında işlenen dosyaların adlarını ekrana yansıtır.-f(file): Üzerinde çalışılacak arşiv dosyasının adını belirtir (mutlaka parametre listesinin en sonunda yer almalıdır).-z(gzip): Arşivigzipalgoritması ile sıkıştırır/açar (.tar.gz).-j(bzip2): Arşivibzip2algoritması ile sıkıştırır/açar (.tar.bz2).-J(xz): Arşivi yüksek sıkıştırma sağlayanxzile işler (.tar.xz).-t(list): Arşivi diske açmadan içindeki dosyaları listeler.
1. Arşiv Oluşturma (.tar.gz)
Belirli bir klasörü (örneğin /home/ahc/proje) hem paketlemek hem de gzip ile sıkıştırmak için -czvf kombinasyonu kullanılır:
tar -czvf proje_yedek.tar.gz /home/ahc/proje
Eğer sadece geçerli dizindeki belirli uzantılara sahip dosyaları paketlemek isterseniz:
tar -czvf kodlar.tar.gz *.cpp *.h
2. Arşiv Dosyasını Açmak (Extract)
Elinizdeki bir .tar.gz dosyasını mevcut dizine açmak için -xzvf kullanılır:
tar -xzvf proje_yedek.tar.gz
Arşivi Farklı Bir Hedef Dizine Açmak (-C)
Arşivi mevcut dizin yerine başka bir klasöre (örn: /var/www/html) açmak için -C (directory) seçeneği eklenir:
tar -xzvf site_yedek.tar.gz -C /var/www/html
3. Arşivi Açmadan İçeriğini Listelemek (-t)
Bir arşivi indirdiğinizde içinde hangi dosyaların olduğunu, dosyaları diske çıkartıp ortamı kirletmeden görmek için -tzvf parametresi kullanılır:
tar -tzvf proje_yedek.tar.gz
4. Belirli Dosyaları Hariç Tutmak (–exclude)
Yedekleme alırken node_modules, build, loglar veya .git gibi gereksiz büyük klasörleri arşive dahil etmemek için --exclude seçeneği kullanılır:
tar --exclude='proje/build' --exclude='proje/.git' -czvf temiz_proje.tar.gz /home/ahc/proje
İpucu:
--excludeparametresini her zaman kaynak klasörün belirtilmesinden önce yazmak en güvenli yoldur.
5. Bağımsız gzip ve gunzip Kullanımı
gzip komutu tekil dosyaları hızla sıkıştırmak için tek başına da kullanılabilir.
# 1. Tek bir log dosyasını sıkıştırmak (orijinal dosya silinir, yerine .gz gelir):
gzip access.log
# Çıktı: access.log.gz
# 2. Orijinal dosyayı koruyarak sıkıştırmak (-k: keep):
gzip -k access.log
# 3. Sıkıştırılmış .gz dosyasını açmak:
gunzip access.log.gz
# veya:
gzip -d access.log.gz
Sıkıştırma Algoritmaları Karşılaştırması
Linux’ta ihtiyaca göre farklı algoritmalar tercih edilebilir:
| Algoritma | Bayrak | Uzantı | Sıkıştırma Hızı | Sıkıştırma Oranı | Kullanım Amacı |
|---|---|---|---|---|---|
| gzip | -z | .tar.gz | Çok Hızlı | İyi | Günlük yedekleme, standart web paketleri |
| bzip2 | -j | .tar.bz2 | Orta | Daha Yüksek | Orta büyüklükteki paketler |
| xz | -J | .tar.xz | Yavaş | En Yüksek | Linux çekirdeği (Kernel), resmi ISO paketleri |
Diğer Terminal Araçlarıyla Otomasyon
Arşivleme işlemi genellikle diğer komutlarla birleştirilir. Örneğin, find komutu ile son 7 gün içinde değişmiş dosyaları bulup doğrudan tar‘a aktarabilirsiniz:
find /var/log -name "*.log" -mtime -7 | tar -czvf son_hafta_loglari.tar.gz -T -
Detaylı POSIX standartları ve gelişmiş arşiv parametreleri için resmi GNU Tar Kullanım Kılavuzu sayfasına göz atabilirsiniz.