wget
Gö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?
wget
Gö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:
İndirmeleri komut dosyası olarak kullanıyorsanız, curl
bunun 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.
Wget kullanmak istiyorsanız, dosyanın boyutunu indirmeden test etmenin bir yolu:
wget --spider $URL 2>&1 | awk '/Length/ {print $2}'
$URL
Tabii 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).
Wget ile maksimum dosya boyutu ayarlamanın makul bir yolu yok gibi görünüyor.
ulimit
(bkz bash(1)
. setrlimit(2)
) Yaklaşımı da wget(1)
biraz ağır olsa da işe yarayacaktır .
wget, -Q
--quota
birkaç URL (özyinelemeli veya giriş listesi) verildiğinde maksimum indirme miktarını sınırlayan bir seçeneğe sahiptir .
https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
$n
bayt:(ulimit -f $(($n/512)); curl --max-filesize $n …)
.curl
dosya boyutu$n/512
512 baytlık blokların üzerine çıkarsa hatayla iptal edilir .