İndirilen dosya boyutunu wget ile nasıl sınırlayabilirim?


13

wgetGörüntü dosyalarını indirmek için (php betiğinden) kullanmak istiyorum , ancak belirli bir boyuttaki dosyaları indirmek istemiyorum.

Dosya boyutunu ile sınırlayabilir miyim wget? Değilse, daha iyi bir yol nedir?

Yanıtlar:


14

İndirmeleri komut dosyası olarak kullanıyorsanız, curlbunun yerine kullanmayı düşünmelisiniz . Wget çıktıyı ayrıştırabilir ve tüm siteleri tekrar tekrar alabilir, ancak curl'un belirli bir dosyanın gerçek indirilmesi ile ilgili daha fazla seçeneği vardır. Man sayfasındaki ilgili seçenek:

--max-filesize İndirilecek dosyanın
maksimum boyutunu (bayt cinsinden) belirtin. İstenen dosya bu değerden büyükse, aktarım başlamaz ve çıkış kodu 63 ile kıvrılır.
NOT: Dosya boyutu indirilmeden önce her zaman bilinmez ve bu tür dosyalar için dosya olsa bile bu seçeneğin bir etkisi olmaz aktarma bu verilen sınırdan daha büyük olur.

Sadece bazı dosyalar için çalışmakla ilgili not dikkate değer. İstemci, dosyanın indirilmeye başlamadan önce ne kadar büyük olacağını bildirmek için sunucuya bağımlıdır. Çoğu ama kesinlikle tüm sunucular bunu bildirmez.


6
Sen daha büyük bir dosya oluşturmasını curl yasaklamak bir sistem limitli bu birleştirebilirsiniz $nbayt: (ulimit -f $(($n/512)); curl --max-filesize $n …). curldosya boyutu $n/512512 baytlık blokların üzerine çıkarsa hatayla iptal edilir .
Gilles 'SO- kötü olmayı bırak'

Ayrıca httrack yapabilirsiniz.
Vi.

6

Wget kullanmak istiyorsanız, dosyanın boyutunu indirmeden test etmenin bir yolu:

wget --spider $URL 2>&1 | awk '/Length/ {print $2}'

$URLTabii ki indirmek istediğiniz dosyanın URL'si nerede .

Böylece komut dosyanızı çıktıya göre koşullandırabilirsiniz. gibi:

{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big

indirme boyutunu 20 MB ile sınırlamak için.

(kod çirkin, yalnızca bilgilendirme amaçlıdır).


1

Wget ile maksimum dosya boyutu ayarlamanın makul bir yolu yok gibi görünüyor.


2
Gilles'in ulimit(bkz bash(1). setrlimit(2)) Yaklaşımı da wget(1)biraz ağır olsa da işe yarayacaktır .
sarnold

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.