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
Kırmızı arka planda Linux terminali.
fatmawati achmad zaenuri/Shutterstock.com

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.

Karşılaştırmalı: En İyi Dosya Sıkıştırma Formatı Nedir?
İLGİLİ Karşılaştırmalı: En İyi Dosya Sıkıştırma Formatı Nedir?

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.

Linux'ta Disk Alanı Açmanın 4 Yolu
İLGİLİ 4 Linux'ta Disk Alanı Açmanın Yolları

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-* 

Bir elektronik tabloyu sıkıştırma

"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ı.* 

Bir dosyayı sıkıştırma ve orijinal dosyayı koruma

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ı.* 

Bir dosyayı gzip ile açma

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ı.* 

Bir dosyanın sıkıştırmasını açma ve arşiv dosyasını koruma

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 

Arşiv dosyasındaki dosya dizinde zaten mevcut olduğunda gzip'ten gelen istemin üzerine yaz

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 

Mevcut bir dosyanın üzerine yazmaya zorlama

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ı yapısını test edin

Dizin ağacında gzip kullanalım ve ne olduğunu görelim.

 gzip -r seviye1/
 ağaç seviyesi1 

Üzerinde gzip çalıştırıldıktan sonra dizin yapısı

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ı.

Dizin ağacından geçen katran çıktısı

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 

Bir arşiv için sıkıştırma istatistiklerini görmek için -l liste seçeneğini kullanma

-t (test) seçeneği ile bir arşiv dosyasının bütünlüğünü kontrol edebilirsiniz.

 gzip -t seviye1.tar.gz 

-t seçeneğiyle bir arşivi test etme

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 

Arşiv olmayan bir dosyayı test etmek için -t seçeneğini kullanma

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 

Hız ve sıkıştırma için gzip'i farklı önceliklere sahip kullanma

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