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.tar
tar
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.py
tar
- 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/
ProjeA
tar
- Hariç Tutma (--exclude
)--exclude=PATTERN
: Belirtilen kalıba uyan dosyaları/dizinleri arşive dahil etmez.
Örnek:
gzip
, bzip2
, xz
Tekil 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.bz2
xzcat dosya.xz
zgrep "desen" dosya.gz
bzgrep "desen" dosya.bz2
xzgrep "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
/ p7zip
7z
(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/icinden
unzip arsiv.zip dosya/yolu/icinden
7z x arsiv.7z dosya/yolu/icinden
Bu 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 |