Bagaimana saya bisa membatasi ukuran file yang diunduh di wget?


13

Saya ingin menggunakan wget(dari skrip php) untuk mengunduh file gambar, tetapi tidak ingin mengunduh file dengan ukuran tertentu.

Bisakah saya membatasi ukuran file wget? Jika tidak, apa cara yang lebih baik?

Jawaban:


14

Jika Anda membuat skrip unduhan, Anda harus mempertimbangkan untuk menggunakannya curl. Wget dapat mem-parsing output dan secara rekursif mengambil seluruh situs, tetapi curl memiliki lebih banyak opsi terkait dengan pengunduhan aktual file tertentu. Berikut adalah opsi yang relevan di halaman manual:

--max-filesize
Menentukan ukuran maksimum (dalam byte) file yang akan diunduh. Jika file yang diminta lebih besar dari nilai ini, transfer tidak akan dimulai dan curl akan kembali dengan kode keluar 63.
CATATAN: Ukuran file tidak selalu diketahui sebelum diunduh, dan untuk file seperti ini opsi ini tidak berpengaruh walaupun file tersebut Transfer akhirnya menjadi lebih besar dari batas yang diberikan ini.

Catatan tentang ini hanya berfungsi untuk beberapa file yang patut dipertimbangkan. Klien bergantung pada server untuk melaporkan seberapa besar file tersebut sebelum mulai mengunduh. Sebagian besar tapi tentu saja tidak semua server melaporkan hal ini.


6
Anda dapat menggabungkan ini dengan batas sistem untuk melarang keriting dari menciptakan sebuah file yang lebih besar dari $nbyte: (ulimit -f $(($n/512)); curl --max-filesize $n …). curlakan dibatalkan dengan kesalahan jika ukuran file melebihi $n/512blok 512-byte.
Gilles 'SO- stop being evil'

Anda juga bisa httrack.
Vi.

6

Jika Anda ingin menggunakan wget, berikut adalah cara untuk menguji ukuran file tanpa mengunduh:

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

dimana $URL URL file yang ingin Anda unduh, tentu saja.

Jadi, Anda dapat mengkondisikan skrip Anda berdasarkan output. seperti:

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

untuk membatasi ukuran unduhan hingga 20 MB.

(kode ini jelek, hanya untuk tujuan informasi).


1

Tampaknya tidak ada cara yang masuk akal untuk mengatur ukuran file maksimal dengan wget.


2
Pendekatan Gilles dengan ulimit(lihat bash(1), setrlimit(2)) juga akan berhasil wget(1), meskipun agak berat.
sarnold

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.