# wget ile Dosya İndirme ve REST API Etkileşimi
Bir web geliştiricisi veya sistem yöneticisi olarak, sık sık uzak sunuculardan dosya indirmeniz veya REST API’leri ile etkileşim kurmanız gerekebilir. Bu işlemler için birçok araç mevcut olsa da, wget komut satırı aracı, güçlü, esnek ve hemen hemen her Linux/Unix sisteminde yerleşik olarak bulunur. Bu makalede, wget kullanarak dosya indirmeyi ve REST API’leriyle nasıl etkileşim kuracağınızı adım adım, farklı seviyelerde (yeni başlayan, orta ve ileri) öğreneceksiniz. wget‘in sunduğu performans optimizasyon tekniklerini de ele alacağız.
1. wget’e Giriş: Temel Kavramlar
wget (World Wide Web downloader), uzak sunuculardan dosya indirmek için tasarlanmış bir komut satırı aracıdır. HTTP, HTTPS ve FTP gibi çeşitli protokolleri destekler. Basit kullanımından karmaşık senaryolara kadar geniş bir yelpazede görevleri yerine getirebilir. wget‘in en büyük avantajlarından biri, güvenilirliği ve komut satırı üzerinden tam kontrol sağlamasıdır. Grafik arayüzlü programların aksine, wget otomasyon senaryolarında ve betiklerde kolayca kullanılabilir. Örneğin, günlük olarak güncellenen bir veri dosyasını otomatik olarak indirmek veya bir REST API’sinden belirli verileri çekmek için idealdir. wget‘i kullanarak sadece dosya indirmekle kalmaz, aynı zamanda indirme işlemini özelleştirebilir, hata durumlarını yönetebilir ve indirme ilerlemesini izleyebilirsiniz. Bu makalede, wget‘in bu özelliklerini detaylı olarak inceleyeceğiz.
2. Yeni Başlayanlar için wget: Adım Adım Dosya İndirme
En basit kullanımda, wget sadece indirmek istediğiniz dosyanın URL’sini alır. Örneğin, [https://fatihsoysal.com/dosya.txt](https://fatihsoysal.com/dosya.txt) adresinden bir dosya indirmek için şu komutu kullanabilirsiniz:
wget https://fatihsoysal.com/dosya.txt
Bu komut, dosya.txt adlı dosyayı mevcut dizine indirir. Farklı bir isimle indirmek isterseniz -O seçeneğini kullanabilirsiniz:
wget -O benim_dosyam.txt https://fatihsoysal.com/dosya.txt
Bu komut, dosyayı benim_dosyam.txt olarak kaydeder. İndirme işleminin ilerlemesini görmek için -v (verbose) seçeneğini kullanabilirsiniz:
wget -v https://fatihsoysal.com/dosya.txt
Bu, indirme işlemiyle ilgili detaylı bilgileri konsola yazdıracaktır. İndirme işlemi sırasında bir hata oluşursa, wget genellikle hatanın nedenini açıklayan bir hata mesajı gösterir.
3. Orta Seviye: Gerçek Dünya Senaryoları ve Optimizasyon İpuçları
Şimdi, daha gerçekçi senaryolara bakalım. Örneğin, büyük bir dosyayı indirmeniz gerekiyorsa, indirme işlemini durdurup daha sonra devam ettirmek isteyebilirsiniz. Bunun için -c (continue) seçeneğini kullanabilirsiniz:
wget -c https://uzun_bir_dosya.zip
Eğer indirme işlemi kesintiye uğrarsa, wget kaldığı yerden devam edecektir. Birden fazla dosyayı indirmek için, URL’leri bir dosyaya yazıp -i seçeneğini kullanabilirsiniz:
wget -i dosya_listesi.txt
dosya_listesi.txt dosyasında her satırda bir URL olmalıdır. İndirme hızını artırmak için, -N (no-clobber) seçeneğini kullanarak daha önce indirilmiş dosyaları tekrar indirmemek önemlidir. Aynı zamanda, -P seçeneği ile indirmelerin kaydedileceği dizini belirleyebilirsiniz. Örneğin, wget -P /home/kullanici/indirmeler -N -i dosya_listesi.txt komutu dosyaları /home/kullanici/indirmeler dizinine indirir ve daha önce indirilmiş dosyaları tekrar indirmez.
4. Nasıl Yapılır? wget ile REST API’leri ile Etkileşim
wget sadece dosya indirmek için değil, aynı zamanda REST API’leri ile etkileşim kurmak için de kullanılabilir. Bunun için --post-data seçeneği ile API’ye gönderilecek verileri belirleyebilirsiniz. Örneğin, bir JSON veri göndermek için:
wget --post-data '{"key1":"value1", "key2":"value2"}' --header="Content-Type: application/json" https://api.ornek.com/veri
Bu komut, belirtilen JSON verisini https://api.ornek.com/veri adresine POST isteği olarak gönderir. --header seçeneği, isteğe ek HTTP başlıkları eklemenizi sağlar. API’den gelen cevabı görmek için -O seçeneği ile bir dosyaya kaydedebilir veya -q (quiet) seçeneğini kullanarak cevabı bastırmazsınız. Yanıtın içeriğini incelemek için, cat komutunu kullanabilirsiniz:
wget --post-data '{"key1":"value1", "key2":"value2"}' --header="Content-Type: application/json" -O yanit.json https://api.ornek.com/veri
cat yanit.json
5. İleri Seviye: Performans Analizi ve Edge Case’ler
Büyük miktarda veri indirirken veya birden fazla API ile etkileşim kurarken, performans kritik hale gelir. wget‘in performansını optimize etmek için birkaç teknik kullanabilirsiniz. Örneğin, -p (page-requisites) seçeneği, bir web sayfasının tüm bağlı kaynaklarını (resimler, CSS, JavaScript vb.) indirmenizi sağlar. Ancak, bu, indirme süresini önemli ölçüde artırabilir. --limit-rate seçeneği ile indirme hızını sınırlayabilirsiniz. Bu, ağınızdaki diğer işlemleri etkilemeden indirme işlemini gerçekleştirmenize yardımcı olur. Örneğin, saniyede 1MB ile sınırlamak için:
wget --limit-rate=1M https://uzun_bir_dosya.zip
Ağ bağlantısının güvenilir olmadığı durumlarda, wget‘in tekrar deneme mekanizmalarını kullanmak önemlidir. --tries seçeneği ile tekrar deneme sayısını, --retry-connrefused seçeneği ise bağlantı reddedildiğinde tekrar denemeyi kontrol eder. --timeout seçeneği ile bağlantı zaman aşımını ayarlayabilirsiniz. Bu seçenekler, indirme işleminin başarısız olma olasılığını azaltır.
6. Vaka Analizi: Bir E-Ticaret Sitesinden Ürün Verilerini Çekme
Bir e-ticaret sitesinin ürün bilgilerini düzenli olarak güncellemeniz gerektiğini varsayalım. Bu bilgiler bir JSON API üzerinden erişilebilir olsun. wget kullanarak bu verileri otomatikleştirilmiş bir şekilde nasıl çekebiliriz?
Öncelikle, API’nin dokümantasyonunu inceleyerek veriyi çekmek için gereken URL’yi ve gerekli parametreleri belirlememiz gerekir. Varsayalım ki API, /urunler adresinde ve ?sayfa=1 parametresi ile birinci sayfadaki ürünleri döndürüyor. Aşağıdaki komut, bu verileri urunler.json dosyasına indirir:
wget -O urunler.json "https://api.eticaret.com/urunler?sayfa=1"
Daha sonra, bu verileri işleyip veritabanınıza kaydedebilirsiniz. Çok sayıda sayfa varsa, bir döngü içinde bu komutu çalıştırarak tüm verileri toplayabilirsiniz.
7. Sonuç ve Sıkça Sorulan Sorular
wget, dosya indirme ve REST API etkileşimleri için güçlü ve esnek bir araçtır. Bu makalede, wget‘in temel kullanımından ileri seviye tekniklerine kadar geniş bir yelpazeyi kapsadık. Performans optimizasyonu ve hata yönetimi teknikleri, gerçek dünya senaryolarında wget‘i daha etkili kullanmanıza yardımcı olacaktır. Unutmayın ki, wget‘in sunduğu birçok seçenek vardır ve bu makalede ele alınmayan diğer seçenekleri de inceleyebilirsiniz. [Fatih Soysal’ın web sitesi](https://fatihsoysal.com) üzerinden daha fazla bilgiye ulaşabilirsiniz.
Sıkça Sorulan Sorular:
1. wget güvenli midir? wget, HTTPS üzerinden güvenli bağlantılar kurmayı destekler. Ancak, her zaman güvenlik açıklarını önlemek için güncel tutulması önemlidir.
2. wget’in alternatifleri nelerdir? curl ve aria2c gibi alternatif komut satırı araçları mevcuttur.
3. wget ile büyük dosyalar nasıl indirilir? -c (continue) seçeneği ve --limit-rate seçeneği büyük dosyaların güvenilir ve hızlı bir şekilde indirilmesini sağlar.
4. wget ile indirme işlemini nasıl durdurabilirim? Ctrl+C tuş kombinasyonunu kullanarak indirme işlemini durdurabilirsiniz.
5. wget ile proxy sunucusu nasıl kullanılır? --proxy ve --proxy-user seçenekleri kullanılarak proxy sunucusu yapılandırılabilir.
Yazar: Fatih Soysal