9 - Dosya Arşivleme ve Sıkıştırma
2025
tar).
gzip, bzip2, xz).
Tip
Genellikle bu iki işlem birlikte yapılır: Önce tar ile arşivlenir, sonra sıkıştırılır.
tar (Tape ARchive) - Temel Kavramtar komutu, dosyaları ve dizinleri tek bir arşiv dosyası (.tar) içinde toplar.tar sıkıştırma yapmaz! Sadece dosyaları bir araya getirir.Örnek Dizin Yapısı:
tar - Arşiv Oluşturma (-c)-c: create - Yeni bir arşiv oluştur.
-v: verbose - İşlem yapılan dosyaları listele (ÖNEMLİ!).
-f: file - Arşiv dosyasının adı (genellikle sonda, hemen ardından dosya adı gelir).
Örnek:
# ProjeA dizinini projeA.tar olarak arşivle
cezmi@ubuntu:~/Belgeler$ tar -cvf projeA.tar ProjeA/
ProjeA/
ProjeA/belgeler/
ProjeA/belgeler/README.md
ProjeA/testler -> ../../test_betikleri # Bağlantının korunduğuna dikkat edin
ProjeA/testler/test1.py
ProjeA/ana_kod.py
cezmi@ubuntu:~/Belgeler$ ls
ProjeA projeA.tartar ve Dosya İzinleri/Sahipliktar arşivleri, varsayılan olarak dosyaların izinlerini (rwx), sahiplik bilgilerini (kullanıcı/grup) ve zaman damgalarını korur.root olarak), bu bilgiler geri yüklenir.-p seçeneği (genellikle varsayılan olarak aktiftir) bu davranıştan sorumludur.Tip
zip formatı genellikle bu Unix/Linux’a özgü bilgileri tam olarak korumaz.
tar ve Sembolik/Sabit Bağlantılartar varsayılan olarak sembolik bağlantıları bağlantı olarak arşivler (yani hedefini değil, bağlantının kendisini). Arşiv açıldığında bağlantı yeniden oluşturulur (hedef varsa çalışır).
-h (veya --dereference) seçeneği ile tar’ın bağlantıları takip edip hedef dosyayı arşivlemesi sağlanabilir.tar sabit bağlantıları da tanır ve arşivlerken optimize edebilir (dosyanın sadece bir kopyasını saklayarak).Tip
Yazılım projeleri veya sistem dosyaları arşivlenirken bağlantıların korunması genellikle istenir. zip genellikle bağlantıları takip eder.
tar - Arşiv İçeriğini Listeleme (-t)-t: table of contents - Arşivin içeriğini açmadan listeler.
-v: verbose - Detaylı bilgi (izinler, sahip, boyut, tarih, bağlantı hedefi).
Örnek:
cezmi@ubuntu:~/Belgeler$ tar -tvf projeA.tar
drwxr-xr-x cezmi/cezmi 0 2025-04-20 10:00 ProjeA/
drwxr-xr-x cezmi/cezmi 0 2025-04-20 10:00 ProjeA/belgeler/
-rw-r--r-- cezmi/cezmi 150 2025-04-20 09:55 ProjeA/belgeler/README.md
lrwxrwxrwx cezmi/cezmi 0 2025-04-20 10:05 ProjeA/testler -> ../../test_betikleri # 'l' harfi symlink olduğunu gösterir
-rw-r--r-- cezmi/cezmi 300 2025-04-20 09:58 ProjeA/testler/test1.py
-rw-r--r-- cezmi/cezmi 1200 2025-04-20 09:50 ProjeA/ana_kod.pytar - Arşivi Açma (-x)-x: xtract - Arşivdeki dosyaları dışarı çıkarır.
-v: verbose - Çıkarılan dosyaları listeler.
-f: file - Açılacak arşiv dosyasının adı.
-p (genellikle varsayılan): İzinleri ve sahiplik bilgilerini koruyarak çıkarır.
Örnek:
tar - Arşivi Farklı Dizine Açma (-C)-C hedef_dizin (Büyük C): Arşivi belirtilen hedef_dizin içine açar. Dizin mevcut olmalıdır. Bu seçenek sonda yer alır.
Örnek:
# /tmp dizini altına yeni bir dizin oluşturup oraya açalım
cezmi@ubuntu:~/Belgeler$ mkdir /tmp/cikartilan_arsiv
cezmi@ubuntu:~/Belgeler$ tar -xvf projeA.tar -C /tmp/cikartilan_arsiv/
ProjeA/
... (çıkarılan dosyalar listelenir) ...
ProjeA/ana_kod.py
cezmi@ubuntu:~/Belgeler$ ls /tmp/cikartilan_arsiv/
ProjeAtar - Hariç Tutma (--exclude)--exclude=PATTERN: Belirtilen kalıba uyan dosyaları/dizinleri arşive dahil etmez.
Örnek:
gzip, bzip2, xzTekil dosyaları veya tar arşivlerini sıkıştırırlar.
| Araç | tar Seçeneği |
Uzantı | Hız | Sıkıştırma Oranı | Notlar |
|---|---|---|---|---|---|
gzip |
-z |
.gz |
Hızlı | İyi | En yaygın, iyi denge. |
bzip2 |
-j |
.bz2 |
Yavaş | Daha İyi | gzip’den daha iyi sıkıştırır. |
xz |
-J (Büyük J) |
.xz |
Çok Yavaş | En İyi | Modern, en iyi sıkıştırma. Çok yaygın. |
-1 (en hızlı) … -9 (en iyi sıkıştırma).tar ile kullanırken: GZIP=-9 tar -czvf ... veya XZ_OPT=-9 tar -cJvf ...tar ile Sıkıştırılmış Arşiv OluşturmaEn yaygın kullanım: tar + sıkıştırma bir arada.
gzip: -z. Uzantı: .tar.gz veya .tgz
bzip2: -j. Uzantı: .tar.bz2
xz: -J. Uzantı: .tar.xz
-c: Create, -v: Verbose, -f: File, -z/-j/-J: Sıkıştırma.
Otomatik Algılama: Modern tar, uzantıdan sıkıştırmayı anlar (-z/-j/-J genelde gereksiz).
Açıkça Belirtmek (Gerekirse): tar -xzvf ..., tar -xjvf ..., tar -xJvf ...
Farklı dizine açmak için -C hedef_dizin kullanılır.
zcat dosya.gz (veya gzcat)bzcat dosya.bz2xzcat dosya.xzzgrep "desen" dosya.gzbzgrep "desen" dosya.bz2xzgrep "desen" dosya.xzÇok büyük arşivleri taşımak veya limitli sistemlerde kullanmak için bölebilirsiniz.
split ile:
zip ile:
zip / unzip - Windows Uyumutar+sıkıştırma kadar verimli değil ve Unix izinlerini/bağlantılarını tam korumaz.sudo apt install zip unzip (gerekirse).zip - Arşiv Oluşturmazip <arşiv_adı.zip> <dosya1> ...: Dosyaları sıkıştırır.
-r: recursive - Dizinleri ve içindekileri eklemek için GEREKLİDİR!
Örnek:
unzip - Arşiv Açma ve Listelemeunzip <arşiv_adı.zip>: Mevcut dizine açar (üzerine yazmadan önce sorar).unzip -l <arşiv_adı.zip>: list - İçeriği açmadan listeler.unzip <arşiv_adı.zip> -d <hedef_dizin>: directory - Belirtilen dizine açar.tar, gzip, bzip2, xz yerleşik şifreleme sağlamaz!
zip: Basit parola koruması sunar (-e). Güvenli değildir!
Güçlü Şifreleme İçin: Hassas veriler için ek araçlar kullanılmalıdır:
gpg -c arsiv.tar.gz (Simetrik şifreleme -> arsiv.tar.gz.gpg)7z a -p<Parola> -mhe=on arsiv.7z dosyalar... (7z ile dosya adları da şifrelenir)openssl enc ... (Daha karmaşık)Güvenlik Uyarısı
Hassas verileri asla sadece zip -e ile korumayın! gpg veya 7z gibi güçlü şifreleme yöntemleri kullanın.
7z / p7zip7z (7-Zip), yüksek sıkıştırma oranı (.7z), çoklu format desteği ve güçlü AES-256 şifreleme sunar.
Linux’ta genellikle p7zip-full paketi ile kurulur: sudo apt install p7zip-full
Kullanım:
.zip, .tar, .gz, .bz2, .xz, .7z genellikle dahili veya kolayca kurulabilen araçlarla açılır..zip dahili olarak desteklenir..xz veya .bz2 desteği olmayabilir. En geniş uyumluluk için .zip veya .tar.gz düşünülebilir.Farklı yöntemlerin performansını görmek için kendiniz test edin:
Büyük bir dizin veya dosya seçin.
Aşağıdaki komutları time ile çalıştırıp süreyi ve oluşan arşiv boyutunu (ls -lh) karşılaştırın:
unzip sorabilir, tar için --keep-old-files).gzip -t, bzip2 -t, xz -t, unzip -t, 7z t.tar -xvf arsiv.tar dosya/yolu/icindenunzip arsiv.zip dosya/yolu/icinden7z x arsiv.7z dosya/yolu/icindenBu konuyu pekiştirmek için aşağıdaki adımları deneyin:
.tar.gz hem de .tar.xz olarak arşivleyin (-v ile). Boyutları karşılaştırın.-t). İzinleri/bağlantıyı gözlemleyin./tmp gibi) açın (-C).zip ile parola korumalı olarak arşivleyin (-e). (Güvensiz olduğunu unutmayın!)7z ile arşivleyin. Boyutunu diğerleriyle karşılaştırın..tar.gz arşivini Windows’ta (varsa) 7-Zip ile açmayı deneyin.| Komut | Açıklama | Notlar |
|---|---|---|
tar -cvf |
Arşiv oluştur (verbose) | İzinleri/sahipliği/linkleri korur |
tar -tvf |
Arşiv içeriğini listele (verbose) | |
tar -xvf |
Arşivi aç (verbose) | İzinleri korur, üzerine yazabilir |
tar -czvf |
gzip ile sıkıştırılmış arşiv oluştur (.tar.gz) |
Hızlı, yaygın |
tar -cjvf |
bzip2 ile sıkıştırılmış arşiv oluştur (.tar.bz2) |
Daha iyi sıkıştırma, yavaş |
tar -cJvf |
xz ile sıkıştırılmış arşiv oluştur (.tar.xz) |
En iyi sıkıştırma, modern, yavaş |
tar -C dir |
Arşivi farklı dizine aç | Seçenek sonda olmalı |
--exclude |
Dosya/Dizini arşivden hariç tut | |
zcat/bzcat/xzcat |
Sıkıştırılmış dosya içeriğini göster | cat gibi ama sıkıştırılmış için |
zgrep/bzgrep/xzgrep |
Sıkıştırılmış dosyada ara | grep gibi ama sıkıştırılmış için |
zip -r |
Dizinlerle birlikte .zip arşivi oluştur |
Windows uyumu yüksek |
unzip |
.zip arşivini aç |
-l listele, -d hedef dizin |
zip -e |
Parola korumalı .zip oluştur |
Güvenli değil! |
split -b |
Dosyayı belirtilen boyutta parçalara böl | cat ile birleştirilir |
7z a |
7z arşivi oluştur (yüksek sıkıştırma) |
-p parola, -mhe=on ad şifreleme |
7z x |
7z arşivini aç |
-o hedef dizin |
gzip/bzip2/xz -t |
Sıkıştırılmış dosyanın bütünlüğünü test et | unzip -t, 7z t |