Linux’ta Arşivleri Diskte Kaydetmeden İndirme ve Çıkarma Yöntemleri

Bu makalede, arşiv dosyalarını disk alanına kaydetmeden indirme ve çıkarma yöntemlerini inceleyeceğiz.

Problemin Tanımı

Bir arşiv dosyasının içeriğini internetten almak genellikle iki adım içerir. Öncelikle, arşiv dosyasını indirip diske kaydetmemiz gerekir. Bu işlem, wget veya curl gibi HTTP istemci komut satırı araçları kullanılarak yapılabilir. Ardından, arşivi çıkararak içindeki dosya, dizin ve verileri elde ederiz.

Çoğu durumda, arşiv dosyası içeriğini aldıktan sonra artık gereksiz hale gelir. Bu nedenle, genellikle arşiv dosyasını silerek disk alanı boşaltma işlemi yapılır. Ancak, nihayetinde istediğimiz sadece arşivin içeriğidir ve arşiv dosyasının kendisi değildir. Bu durumda, arşiv dosyasını diske yazmak gereksiz görünüyor. Peki, arşiv dosyasını tamamen kaydetmeden arşiv dosyasının içeriğini nasıl elde edebiliriz?

Bunu Linux pipe yapısı kullanarak nasıl gerçekleştirebileceğimize bakalım.

Pipe ile Anlık Çıkarma

Fikir, arşiv dosyasını indirirken parça parça çıkarmaktır. Yani, indirdiğimiz arşiv dosyasının baytlarını çıkarma sürecine yönlendirebiliriz. Bu, çıkarma sürecinin indirme işlemiyle aynı anda çalışmasını sağlar, bu da daha verimli hale getirir.

Ayrıca, arşiv dosyasını silme işlemi için ayrı bir komut çalıştırma yükünden de kurtulmuş oluruz. Sonuç olarak, arşiv dosyalarını diske yazmadığımız için disk I/O işlemlerinden tasarruf sağlarız. Bu durum, kullanım bazlı faturalandırma yapılan bulut tabanlı kaynaklarda çalışırken özellikle önemlidir.

1. .tar.gz Dosyasını Çıkarma

Örneğin, Cpynet web sitesinde barındırılan 1 milyar kelimelik dil modelleme benchmark dosyasını indirelim. Bu dosya 1.7GB boyutundadır ve .tar.gz formatındadır.

Arşiv içeriğini çıkarmak için wget ve tar komutunu bir arada kullanarak tek bir satırda işlem yapabiliriz:

wget -qO- https://cpynet.com/lm-benchmark/1-billion-word-language-modeling-benchmark-r13output.tar.gz | tar xvz

Çıktı:

  • Çıktı, arşiv dosyasının içindeki dosyaların adlarını gösterecektir. Örneğin:
x 1-billion-word-language-modeling-benchmark-r13output/
x 1-billion-word-language-modeling-benchmark-r13output/file1.txt
x 1-billion-word-language-modeling-benchmark-r13output/file2.txt

Burada, wget komutu arşiv dosyasını indirir ve standart çıkış akışına yönlendirir. -O- seçeneği ile indirdiğimiz baytları standart çıkışa yazıyoruz. Ayrıca, -q seçeneği, wget komutunun standart çıkışta başka mesajlar yazmasını engeller.

Komutun ikinci kısmı, standart girdi akışında bulunan indirilen baytları tar komutuna yönlendirir. tar komutu, arşivi çıkarır ve içeriği mevcut dizine yerleştirir. -xz seçeneği çıkarma ve sıkıştırmayı açma işlemlerini gerçekleştirirken, -v seçeneği ise ayrıntılı modu aktif hale getirir.

Ayrıca, curl komutunu da kullanarak işlemi gerçekleştirebiliriz:

curl -s -L https://cpynet.com/lm-benchmark/1-billion-word-language-modeling-benchmark-r13output.tar.gz | tar xvz

Çıktı:

  • Çıktı, yukarıda belirtildiği gibi, çıkarılan dosyaların adlarını gösterecektir.

2. .zip Dosyasını Çıkarma

Cpynet web sitesinde barındırılan bir .zip dosyasını çıkaralım. Zip dosyası, arşiv dosyasının sonunda bir dizin dosyası bulundurur. Bu dizin dosyası, arşivin içeriği hakkında bilgi içerir ve çıkarıcıya nereden bakacağını söyler. Bu yapı, çıkarıcının tam arşiv dosyasına ihtiyaç duyması nedeniyle bir sorun gibi görünmektedir. Ancak, bsdtar gibi araçlar, bu gerçeği kullanarak .zip dosyalarını pipe üzerinden çıkarabilir.

wget -qO- https://cpynet.com/dc/enwik9.zip | bsdtar -xvf-

Çıktı:

  • Çıktı, çıkarılan dosyaların adlarını gösterecektir. Örneğin:
x enwik9

bsdtar komutundaki -f- seçeneği, çıkarma işleminin standart girişten geldiğini belirtir. -x seçeneği çıkarma işlemini tanımlarken, -v seçeneği komuttan tanımsal mesajlar almak için ayrıntılı modunu etkinleştirir.

Sonuç

Bu makalede, Linux’ta arşivleri disk alanına kaydetmeden indirip çıkarma yöntemlerini inceledik. Özellikle, arşiv dosyası baytlarını çıkarıcıya yönlendirerek arşiv dosyasının tamamını beklemeden içerik elde edebiliriz. Bunun sonucunda, disk alanını optimize eder, işleme süresini azaltır ve I/O işlemlerini minimize ederiz.

Önceki Konu

Linux’ta Inode Sınırlamaları ve Çözümler

Sonraki Konu

Windows Recall’ı Devre Dışı Bırakma ve Kaldırma Yöntemleri

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨