Linux'ta Gzip ile Dosyalar Nasıl Sıkıştırılır ve Sıkıştırılır
Yayınlanan: 2022-06-28
Pek çok dosya sıkıştırma yardımcı programı vardır, ancak her Linux dağıtımında bulacağınız garanti edilen program gzip
. Yalnızca bir sıkıştırma aracı kullanmayı öğrenirseniz, bu gzip
olmalıdır.
İLGİLİ: Dosya Sıkıştırma Nasıl Çalışır?
Algoritmalar ve Ağaçlar
gzip
veri sıkıştırma aracı 1990'ların başında yazılmıştır ve hala her Linux dağıtımında bulunmaktadır. Kullanılabilecek başka sıkıştırma araçları da var, ancak hangi Linux bilgisayarında çalışmanız gerektiğinin bir önemi yok, üzerinde gzip
bulacaksınız. Yani gzip
kullanmayı biliyorsanız, herhangi bir şey yüklemenize gerek kalmadan gidebilirsiniz.
gzip
, PKZIP şöhretinden Phil Katz tarafından icat edilen ve patenti alınan DEFLATE algoritmasının bir uygulamasıdır. DEFLATE algoritması, tümü bir temanın varyasyonları üzerinde çalışan önceki sıkıştırma algoritmalarını geliştirdi. Sıkıştırılacak veriler taranır ve benzersiz dizeler tanımlanır ve bir ikili ağaca eklenir.
Benzersiz dizelere , ağaçtaki konumlarından dolayı benzersiz bir kimlik belirteci atanır. Belirteçler, verilerdeki dizeleri değiştirmek için kullanılır ve belirteçler değiştirdikleri verilerden daha küçük olduğu için dosya sıkıştırılır. Orijinal dizeler için belirteçlerin değiştirilmesi, verileri sıkıştırılmamış durumuna geri şişirir.
DEFLATE algoritması, en sık karşılaşılan dizilere en küçük belirteçler ve en az rastlanan dizilere daha büyük olanlar tahsis edildiği bükümü ekledi. DEFLATE algoritması ayrıca daha önceki iki sıkıştırma yöntemi olan Huffman kodlaması ve LZ77 sıkıştırmasından gelen fikirleri de içeriyordu.
Yazma sırasında, DEFLATE algoritması neredeyse otuz yıllıktır. Otuz yıl önce veri depolama maliyetleri yüksekti ve iletim hızları yavaştı. Veri sıkıştırma hayati derecede önemliydi.
Veri depolama bugün çok daha ucuz ve iletim hızları çok daha hızlı. Ancak depolayacak çok daha fazla verimiz var ve dünyanın her yerindeki insanlar bulut depolama ve akış hizmetlerine erişiyor. Tek yaptığınız karşıya yüklemeniz veya iletmeniz gereken bir şeyi küçültmek olsa veya yerel bir sabit diskte biraz yer açmaya çalışıyor olsanız bile, veri sıkıştırma hala hayati derecede önemlidir.
gzip Komutu
Dosya ne kadar büyükse, sıkıştırma o kadar iyi olabilir. Bunun nedeni iki nedendir. Birincisi, büyük bir dosya boyunca birçok tekrarlanan, özdeş bayt dizisi olacaktır. İkinci neden, sıkıştırmanın açılabilmesi için dizelerin ve belirteçlerin listesinin sıkıştırılmış dosyada saklanması gerektiğidir. Çok küçük bir dosya ile bu sıkıştırmanın faydalarını ortadan kaldırabilir. Ancak oldukça küçük bir dosyada bile, boyutta bir miktar azalma olması muhtemeldir.
Bir Dosyayı Sıkıştırmak
Bir dosyayı sıkıştırmak için tek yapmanız gereken dosyanın adını gzip
komutuna iletmektir. Dosyanın orijinal boyutunu kontrol edeceğiz, sıkıştıracağız ve ardından sıkıştırılmış dosyanın boyutunu kontrol edeceğiz.
ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*
"Calc-sheet.ods" adlı bir elektronik tablo olan orijinal dosya 11 KB'dir ve arşiv dosyası olarak da bilinen sıkıştırılmış dosya 9,3 KB'dir. Arşiv dosyasının adının, kendisine “.gz” eklenmiş orijinal dosyanın adı olduğunu unutmayın.
ls
komutunun ilk kullanımı, belirli bir dosyayı, elektronik tabloyu hedefler. ls'nin ikinci kullanımı, " ls
" ile başlayan tüm dosyaları arar, ancak yalnızca sıkıştırılmış dosyayı bulur. Bunun nedeni, varsayılan olarak gzip
arşiv dosyasını oluşturması ve orijinal dosyayı silmesidir.
Bu bir sorun değil. Orijinal dosyaya ihtiyacınız varsa, onu arşiv dosyasından alabilirsiniz. Ancak orijinal dosyayı korumayı tercih ederseniz, -k
(sakla) seçeneğini kullanabilirsiniz.
gzip -k calc-sheet.ods
ls -lh hesap sayfası.*
Bu sefer orijinal ODS dosyası korunur.
Bir Dosyanın Sıkıştırılmasını Açma
Bir GZ arşiv dosyasını açmak için -d
(açma) seçeneğini kullanın. Bu, sıkıştırılmış dosyayı arşivden çıkaracak ve orijinal dosyadan ayırt edilemeyecek şekilde sıkıştırmasını açacaktır.
ls hesap sayfası.*
gzip -d calc-sheet.ods.gz
ls hesap sayfası.*
Bu sefer gzip
orijinal dosyayı çıkardıktan sonra arşiv dosyasını sildiğini görebiliriz. Arşiv dosyasını saklamak için -k
(sakla) seçeneğinin yanı sıra -d
(açma) seçeneğini tekrar kullanmamız gerekiyor.
ls hesap sayfası.*
gzip -d calc-sheet.ods.gz
ls hesap sayfası.*
Bu sefer gzip arşiv dosyasını silmez.

İLGİLİ: Silinen Dosyalar Neden Kurtarılabilir ve Bunu Nasıl Önleyebilirsiniz?
Sıkıştırmayı Açma ve Üzerine Yazma
Orijinal dosyanın veya aynı dosyaya sahip farklı bir dosyanın bulunduğu bir dizindeki bir dosyayı ayıklamaya çalışırsanız, gzip
çıkarmayı bırakmanızı veya mevcut dosyanın üzerine yazmayı seçmenizi ister.
gzip -d metin dosyası.txt.gz
Dizindeki dosyanın arşivden dosya tarafından üzerine yazılmasından memnun olduğunuzu önceden biliyorsanız, -f (zorla) seçeneğini kullanın.
gzip -df metin dosyası.txt.gz
Dosyanın üzerine yazılır ve sessizce komut satırına dönersiniz.
Dizin Ağaçlarını Sıkıştırmak
-r
(özyinelemeli) seçeneği, gzip
tüm dizin ağacındaki dosyaları sıkıştırmasına neden olur. Ancak sonuç beklediğiniz gibi olmayabilir.
İşte bu örnekte kullanacağımız dizin ağacı. Dizinlerin her biri bir metin dosyası içerir.
ağaç seviyesi1
Dizin ağacında gzip
kullanalım ve ne olduğunu görelim.
gzip -r seviye1/
ağaç seviyesi1
Sonuç olarak gzip
, dizin yapısındaki her metin dosyası için bir arşiv dosyası oluşturmuştur. Tüm dizin ağacının bir arşivini oluşturmadı. Aslında, gzip
bir arşive yalnızca tek bir dosya koyabilir.
Bir dizin ağacını ve tüm dosyalarını içeren bir arşiv dosyası oluşturabiliriz, ancak oyuna başka bir komut getirmemiz gerekiyor. tar
programı birçok dosyanın arşivini oluşturmak için kullanılır, ancak kendi sıkıştırma rutinleri yoktur. Ancak tar
ile uygun seçenekleri kullanarak tar
arşiv dosyasını gzip
üzerinden itmesine neden olabiliriz. Bu şekilde sıkıştırılmış bir arşiv dosyası ve çok dosyalı veya çok dizinli bir arşiv elde ederiz.
tar -czvf seviye1.tar.gz seviye1
tar
seçenekleri şunlardır:
- c : Bir arşiv oluşturun.
- z : Dosyaları
gzip
üzerinden itin. - v : Ayrıntılı mod.
tar
ne yaptığını terminal penceresinde yazdırın. - f level1.tar.gz : Arşiv dosyası için kullanılacak dosya adı.
Bu, dizin ağacı yapısını ve dizin ağacındaki tüm dosyaları arşivler.
İLGİLİ: Linux'ta tar Komutunu Kullanarak Dosyaları Sıkıştırma ve Çıkarma
Arşivler Hakkında Bilgi Alma
-l
(liste) seçeneği, bir arşiv dosyası hakkında bazı bilgiler sağlar. Arşivdeki dosyanın sıkıştırılmış ve sıkıştırılmamış boyutlarını, sıkıştırma oranını ve dosyanın adını size gösterir.
gzip -l seviye1.tar.gz
gzip -l metin dosyası.txt.gz
-t
(test) seçeneği ile bir arşiv dosyasının bütünlüğünü kontrol edebilirsiniz.
gzip -t seviye1.tar.gz
Her şey yolundaysa, sessizce komut satırına dönersiniz. Hiçbir haber iyi haber değildir.
Arşiv bozuksa veya arşiv değilse, size bu konuda bilgi verilir.
gzip -t arşiv değil.gz
Hız Karşı Sıkıştırma
Arşiv oluşturma hızına veya sıkıştırma derecesine öncelik vermeyi seçebilirsiniz. Bunu, seçenek olarak -1
top -9
kadar bir sayı sağlayarak yaparsınız. -1
seçeneği, sıkıştırma feda edildiğinde en yüksek hızı verir ve -9
, hız feda edildiğinde en yüksek sıkıştırmayı verir.
Bu seçeneklerden birini sağlamadığınız sürece, gzip -6
kullanır.
gzip -1 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -9 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -6 calc-sheet.ods
ls -lh calc-sheet.ods.gz
Bu kadar küçük bir dosyayla, yürütme hızında önemli bir fark görmedik, ancak sıkıştırmada küçük bir fark vardı.
İlginç bir şekilde, seviye 9 sıkıştırma ve seviye 6 sıkıştırma kullanma arasında hiçbir fark yoktur. Herhangi bir dosyadan ancak bu kadar sıkıştırma yapabilirsiniz ve bu durumda, seviye 6 sıkıştırma ile bu sınıra ulaşılmıştır. 9'a kadar çevirmek dosya boyutunda daha fazla azalma getirmedi. Daha büyük dosyalarla, seviye 6 ve seviye 9 arasındaki fark daha belirgin olacaktır.
Sıkıştırılmış, Korunmamış
Sıkıştırmayı şifreleme veya herhangi bir koruma biçimiyle karıştırmayın. Bir dosyayı sıkıştırmak, ona herhangi bir güvenlik veya gelişmiş gizlilik sağlamaz. Dosyanıza erişimi olan herkes, sıkıştırmasını açmak için gzip
kullanabilir.
İLGİLİ: Linux'taki En Büyük 10 Dosyayı veya Dizini Listeleyin