wget
Bu kitapçıkta daha önce de karşılaştığımız komutlardan wget, internetten dosya ve web sayfalarını indirmek için kullanılan güçlü ve esnek bir komut satırı aracıdır. İsmi Web GET sözcüklerinin kısaltmasıdır. Özellikle toplu indirmeler, yarım kalan indirmeleri devam ettirme ve web sitelerini yansıtma (mirroring) gibi işlemler için kullanışlıdır.
wget
vs curl
:wget
ile benzer işlevleri gören bir diğer popüler araç curl
'dür. İkisi de URL'lerden veri aktarımı yapar ancak farklı kullanım amaçları ve felsefeleri vardır:
wget
: Genellikle dosyaları indirmek ve web sitelerini özyinelemeli (recursive) olarak indirmek için tasarlanmıştır. Varsayılan olarak dosyaları diske kaydeder.curl
: Daha çok tek bir URL ile etkileşim kurmak, veriyi standart çıktıya (stdout) yazdırmak (bu da pipe ile başka komutlara bağlanmasını kolaylaştırır) ve çok çeşitli protokolleri (HTTP, HTTPS, FTP, SCP, LDAP, SMTP vb.) desteklemek üzerine odaklanmıştır. API testleri ve betiklerde sıkça kullanılır.
Her iki aracın da kendine özgü güçlü yanları vardır ve genellikle sistem yöneticileri her ikisini de kullanır. Bu bölümde wget
'e odaklanacağız.
İnternetten herhangi bir dosyayı indirmek için dosya adresini wget'e parametre olarak vermek yeterlidir.
Yukarıdaki komutla bulunduğumuz dizine plugged.sh
dosyası inecektir.
Bazen linkler istediğimiz isim yapısında olmayabilir. İndirilen dosyayı farklı isimle kaydetmek için aşağıdaki yöntem izlenebilir.
Artık dosya plugged.sh
ismiyle değil, install.sh
ismiyle kaydedilecektir.
Yarım Kalan İndirmeler
Normalde wget
programı, indirilen dosya hali hazırda dizinde mevcutsa, yeni indirilen dosyayı sonuna .1 .2 gibi rakamlar koyarak yazar. Örneğin yukarıdaki örnekte plugged.sh dosyası zaten dizinde mevcutsa, yeniden indirdiğimizde wget
dosyayı plugged.sh.1 olarak kaydeder.
Oysa indirme sırasında dosya yarım kalmışsa, kaldığı yerden devam ettirmek için -c parametresini vermemiz yeterlidir.
Hız Limitleme
İndirme hızını limitlemek için --limit-rate
parametresi kullanılır.
Deneme Sayısı
Bazı durumlarda indirme işlemini kaç kez deneyeceğinizi belirtmek isteyebilirsiniz.
İndirme İşlemini Arka Planda Gerçekleştirme
Büyük dosyaları indirme işlemini arka planda yürütebilirsiniz. Böyle bir durumda wget
size programın PID numarasını verecek, ve logları yazdığı dosyayı bildirecekir. Bu sayede isterseniz indirme işlemini log dosyasından takip edebilir, dilediğiniz zaman PID numarasını kullanarak programı durdurabilirsiniz.
Liste Kullanımı
İndirilecek dosyaların bir listesini bir program ile oluşturabilirsiniz, veya yükleme yazılımınızda kullanmak üzere hazırlayabilirsiniz. Bu listedeki linkleri sırayla indirmesi için wget programına parametre olarak verebilirsiniz.
İndirme Kontrolü
Bazı durumlarda indirme işleminden önce indirmenin mümkün olup olmadığını kontrol edebilirsiniz. Bunun için --spider
seçeneği kullanılabilir. Bu seçeneğin en yaygın kullanımı, sisteminizin internet erişiminin olup olmadığı, internet erişimi varsa da DNS çözümlemelerini doğru yapıp yapmadığınız konusundadır. Aşağıdaki örnekleri inceleyelim.
Gördüğünüz gibi google.com için exit status 0 aldık, oysa google.c için exit status 4 döndü. Bu sayede scriptlerimize bir internet kontrol mekanizması koyabiliriz.
En yaygın kullanım, bu seçeneği -q
(quiet) seçeneği ile kullanmaktır.
NOT: Yukarıdaki ifadelerde $? gösteriminin ne anlama geldiğini bilmiyorsanız, kitabın Bash Programlama bölümüne bakabilirsiniz.
Tarayıcı Gibi Davranmak
İndirmek istediğiniz bazı linkler kaynağın bir tarayıcı gibi davranmasını isterler. Aşağıda bu tip senaryolarda kullanabileceğiniz iki yol gösterici örnek görebilrsiniz.
Veya cookie kullanılarak login yapılabilir.
Sayfayı Tamamen İndirmek
Yukarıdaki komut plugged.in sayfasını indirme_dizini
dizinine indirecektir. --mirror
seçeneği, bütün dizinleri indirmesi gerektiğini belirtir. -p
ile HTML'in doğru görüntülenmesi için gerekli dosyalar (örn. CSS dosyaları) beraberinde gelir. --convert-links
HTML dosyaları içerisindeki linkleri yerel linkler ile değiştirir. Bu işlem sadece indirme tamamlanınca gerçekleşir, yani indirme işlemini yarıda keserseniz linkleri düzenlemez.
Yukarıdaki komutun açık hali şöyledir
Okuduğunuz kitabın HTML halini indirmek isterseniz aşağıdaki komutu kullanabilirsiniz.
Belirli Dosya Tiplerini ve Dizin Oluşumunu Engellemek
Aşağıdaki örnek, rackdc CentOS mirror'undan iso dosyaları hariç (--reject
) tüm dosyaları indirecek, ancak "Parent Directory"e gidip tarama işlemini genişletmeyecek (-np
) ve tamamını tek dizine indirip alt dizinleri oluşturmayacaktır.
Sadece Belirli Dosyaları İndirmek
Benzer şekilde sadece belirli tipteki dosyaları indirebilirsiniz.
FTP Kullanımı
Son olarak wget ile anonim ve şifreli FTP kullanımı göreceğiz.
*FreeBSD Sisteminde wget yerine fetch kullanılmaktadır.
Last updated