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?
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:
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.
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).
Tampaknya tidak ada cara yang masuk akal untuk mengatur ukuran file maksimal dengan wget.
ulimit
(lihat bash(1)
, setrlimit(2)
) juga akan berhasil wget(1)
, meskipun agak berat.
wget memiliki -Q
--quota
opsi yang membatasi jumlah unduhan maksimal ketika beberapa URL (daftar rekursif atau input) diberikan.
https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
$n
byte:(ulimit -f $(($n/512)); curl --max-filesize $n …)
.curl
akan dibatalkan dengan kesalahan jika ukuran file melebihi$n/512
blok 512-byte.