Belajar Wget - Resume, Retry & Kontrol Download
Episode 4 of 23

Belajar Wget - Resume, Retry & Kontrol Download

Menangani download yang terputus: melanjutkannya dengan -c, mengatur percobaan ulang dengan --tries, mengendalikan waktu tunggu dan kecepatan transfer, serta menjalankan download di latar belakang dengan -b.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Hingga episode 3, semua download kita berjalan mulus. Di dunia nyata, kenyataannya tidak semanis itu: jaringan putus di tengah jalan, server sibuk, bandwidth sempit, dan pekerjaan men-download file 2GB tidak bisa menunggu kalian menatap layar. Episode ini adalah tentang ketahanan — bagaimana membuat wget bertahan terhadap kegagalan dan mengendalikan perilakunya secara presisi.

Bayangkan mengirim truk ekspedisi dalam perjalanan jauh. Yang membedakan kurir profesional dari yang amatir bukanlah truknya, melainkan bagaimana ia menangani jalan rusak: melanjutkan dari posisi terakhir, mencoba rute ulang, mengatur kecepatan, dan melaporkan hasil meski tidak diawasi. Itulah tepatnya yang akan kita bangun pada wget di episode ini.

Resume Download: -c

Skenario paling umum: download terputus di tengah jalan — koneksi mati, laptop tertutup, atau server menjawab lambat. Wget sudah meninggalkan file parsial di disk. Daripada memulai dari nol, wget bisa melanjutkan dari posisi terakhir dengan opsi -c (atau --continue):

Lanjutkan download yang terputus
wget -c https://speed.hetzner.de/100MB.bin

Begini cara kerjanya: wget memeriksa file parsial yang sudah ada, lalu mengirim request dengan header Range: bytes=... ke server. Server yang mendukung resume akan menjawab dengan status 206 Partial Content dan mengirim hanya bagian yang tersisa. Server yang tidak mendukungnya menjawab 200 OK dengan isi penuh — dan wget terpaksa memulai dari awal.

Important

Aturan praktisnya: -c hanya berarti "lanjutkan dari yang sudah ada" jika server mendukung Range request. Kalau server tidak mendukung, wget mengunduh ulang dari nol. Tidak ada kerugian memakai -c — jika file belum ada, ia berperilaku seperti download biasa. Karena itu, biasakan selalu menambahkan -c pada download file besar.

Untuk memastikan server mendukung resume, kalian bisa mengecek header responsnya dengan wget -S URL — jika ada header Accept-Ranges: bytes, server siap melayani resume.

Retry: --tries

Jaringan tidak selalu stabil, dan server bisa sibuk. Wget punya mekanisme percobaan ulang (retry) bawaan — secara default wget mencoba hingga 20 kali sebelum menyerah. Kalian bisa mengaturnya dengan opsi --tries (atau -t):

Batasi maksimal 5 kali percobaan
wget --tries=5 https://example.com/big-file.iso
Coba terus tanpa batas
wget --tries=inf https://example.com/big-file.iso

Pertimbangannya: default 20 sudah cukup untuk kebanyakan kasus, tapi di script batch yang men-download ratusan file, 20 percobaan per file bisa membuat job berjalan sangat lama. --tries=3 sampai --tries=5 adalah nilai yang banyak dipakai di production. Antara setiap percobaan, wget juga menyisipkan jeda singkat — diatur dengan --wait jika kalian ingin mengendalikannya.

Tip

Kombinasi favorit di production: wget -c --tries=5 URL. -c melanjutkan dari posisi terputus, --tries membatasi pengulangan. Keduanya bekerja sama untuk menjaga download file besar tetap maju meski jaringan tidak bersahabat.

Timeout: Kendali Waktu

Timeout adalah batas waktu yang menghentikan download jika tidak ada kemajuan — wget tidak akan menunggu selamanya. Wget membedakan beberapa jenis timeout:

OpsiFungsi
--timeout=NMengatur semua jenis timeout sekaligus ke N detik
--dns-timeout=NBatas waktu resolusi DNS
--connect-timeout=NBatas waktu pembukaan koneksi
--read-timeout=NBatas waktu menunggu data dari server

--read-timeout adalah yang paling sering perlu diperhatikan: jika server mengirim data dengan sangat lambat, wget berhenti setelah batas waktu ini tanpa data baru. Contoh pengaturan yang realistis:

Timeouts yang seimbang untuk download besar
wget --timeout=60 --dns-timeout=10 https://example.com/big-file.iso

Pola di atas memberi kelonggaran 60 detik untuk koneksi dan pembacaan, dengan pengecualian DNS yang dipercepat ke 10 detik. Nilai timeout yang terlalu kecil membuat download sering gagal sia-sia; terlalu besar membuat wget diam berjam-jam saat server macet.

Batasi Kecepatan: --limit-rate

Men-download file besar bisa menyedot seluruh bandwidth — dan mengganggu layanan lain di server yang sama. Wget menyediakan opsi --limit-rate untuk membatasi kecepatan transfer:

Batasi kecepatan 500 KB/detik
wget --limit-rate=500k https://speed.hetzner.de/100MB.bin

Suffix k, m, dan g masing-masing berarti kilo, mega, dan giga byte per detik — jadi 500k sama dengan 500 KB/detik, dan 2m sama dengan 2 MB/detik. Ini seperti mengatur jarak aman di jalan tol: download tetap berjalan, tapi tidak membahayakan pengguna jalan lain.

Download di Latar Belakang: -b

Download file besar memakan waktu lama — dan kalian tidak perlu menunggunya di terminal. Opsi -b (atau --background) langsung memindahkan wget ke latar belakang:

Download di latar belakang dengan log terpisah
wget -b -o download.log https://speed.hetzner.de/100MB.bin

Dengan -b, wget kembali ke prompt terminal seketika dan melanjutkan download di belakang layar. Tanpa -o, wget menulis log ke file bernama wget-log di direktori kerja. Untuk memantau perkembangan, buka file lognya:

Pantau perkembangan download
tail -f download.log

Ini adalah pola favorit untuk download panjang: jalankan di pagi hari, biarkan bekerja, dan periksa log di sore hari. Wget juga mencatat PID-nya di awal log, sehingga kalian bisa menghentikannya dengan kill jika diperlukan.

Warning

-b bukan pengganti nohup atau screen — begitu terminal ditutup, proses wget ikut berhenti kecuali kalian melindunginya. Untuk download terjadwal yang harus bertahan, gabungkan -b dengan job scheduler seperti cron atau systemd timer — topik yang akan kita dalami di episode scripting.

Kesalahan Umum (Common Pitfalls)

  1. Lupa -c pada file besar. Download terputus lalu dijalankan ulang tanpa -c berarti mengulang dari nol. Biasakan menambah -c sejak awal.

  2. Mengharapkan resume di server tanpa Range. Jika server menjawab 200 alih-alih 206, resume tidak terjadi — itu batasan server, bukan bug wget.

  3. --tries terlalu besar di batch. 20 percobaan per file pada ratusan file memperpanjang job berjam-jam. Gunakan nilai kecil di skenario batch.

  4. -b tanpa -o membuat file wget-log menumpuk. Beri nama log yang jelas dengan -o agar mudah dilacak.

Penutup

Pada episode 4 ini kalian telah melengkapi wget dengan ketahanan: melanjutkan download yang terputus dengan -c, mengatur percobaan ulang dengan --tries, mengendalikan waktu tunggu dengan keluarga --timeout, membatasi kecepatan dengan --limit-rate, serta menjalankan download di latar belakang dengan -b dan memantau lognya.

Inti yang harus dibawa pulang:

  • -c melanjutkan download dari posisi terakhir; butuh dukungan Range dari server (206 Partial Content).
  • --tries=N membatasi percobaan ulang; --tries=inf mencoba tanpa batas.
  • --timeout mengatur batas waktu; --dns-timeout dan --read-timeout untuk kontrol per-tahap.
  • --limit-rate=500k menjaga bandwidth untuk layanan lain.
  • -b memindahkan download ke latar belakang; pantau lewat file log.

Di episode 5 selanjutnya kita akan membahas batch download & banyak file — men-download puluhan URL sekaligus dari sebuah daftar file dengan -i, mengatur direktori tujuan dengan -P dan -x, serta memakai nama file dari header server dengan --content-disposition. Sampai jumpa di episode 5!

Belajar Wget - Resume, Retry & Kontrol Download | Belajar Wget