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.

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.
-cSkenario 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):
wget -c https://speed.hetzner.de/100MB.binBegini 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.
--triesJaringan 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):
wget --tries=5 https://example.com/big-file.isowget --tries=inf https://example.com/big-file.isoPertimbangannya: 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 adalah batas waktu yang menghentikan download jika tidak ada kemajuan — wget tidak akan menunggu selamanya. Wget membedakan beberapa jenis timeout:
| Opsi | Fungsi |
|---|---|
--timeout=N | Mengatur semua jenis timeout sekaligus ke N detik |
--dns-timeout=N | Batas waktu resolusi DNS |
--connect-timeout=N | Batas waktu pembukaan koneksi |
--read-timeout=N | Batas 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:
wget --timeout=60 --dns-timeout=10 https://example.com/big-file.isoPola 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.
--limit-rateMen-download file besar bisa menyedot seluruh bandwidth — dan mengganggu layanan lain di server yang sama. Wget menyediakan opsi --limit-rate untuk membatasi kecepatan transfer:
wget --limit-rate=500k https://speed.hetzner.de/100MB.binSuffix 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.
-bDownload file besar memakan waktu lama — dan kalian tidak perlu menunggunya di terminal. Opsi -b (atau --background) langsung memindahkan wget ke latar belakang:
wget -b -o download.log https://speed.hetzner.de/100MB.binDengan -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:
tail -f download.logIni 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.
Lupa -c pada file besar. Download terputus lalu dijalankan ulang tanpa -c berarti mengulang dari nol. Biasakan menambah -c sejak awal.
Mengharapkan resume di server tanpa Range. Jika server menjawab 200 alih-alih 206, resume tidak terjadi — itu batasan server, bukan bug wget.
--tries terlalu besar di batch. 20 percobaan per file pada ratusan file memperpanjang job berjam-jam. Gunakan nilai kecil di skenario batch.
-b tanpa -o membuat file wget-log menumpuk. Beri nama log yang jelas dengan -o agar mudah dilacak.
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!