Menjalankan download file pertama: menyimpan file dengan nama dari URL, mengganti nama dengan -O, mengalirkan output ke stdout dengan -O -, serta mengendalikan progress bar dan log dengan -q, -nv, dan -a.

Setelah di episode 2 kita membedah arsitektur wget — dari model non-interaktif hingga enam tahap transfer — saatnya episode paling praktis: men-download file yang sesungguhnya. Episode ini adalah tonggak, karena mulai dari sini semua perintah yang kalian pelajari langsung bisa dipakai untuk hal nyata: mengambil file dari server, mengunduh aset, dan membaca data dari API.
Perbedaan kunci yang akan kita rasakan sejak pertama: wget menulis file ke disk, bukan menampilkan body ke layar seperti curl. Ini bukan detail kecil — inilah perbedaan filosofis antara keduanya yang sudah kita singgung di episode 1, dan sekarang kita akan melihatnya dalam praktik.
Buka terminal, masuk ke direktori kerja yang bersih, dan jalankan:
wget https://example.comPerhatikan outputnya:
--2026-08-03 09:15:00-- https://example.com/
Resolving example.com (example.com)... 93.184.215.14
Connecting to example.com (example.com)|93.184.215.14|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: ‘index.html’
index.html 100%[===========================>] 1.23K --.-KB/s in 0s
2026-08-03 09:15:00 (5.84 MB/s) - ‘index.html’ saved [1256/1256]Lihat garis-garisnya — itu persis enam tahap dari episode 2:
Resolving example.com... — tahap resolusi DNS.Connecting to example.com ... 443... connected. — tahap koneksi TCP.HTTP request sent, awaiting response... 200 OK — request dikirim, server menjawab dengan status 200.Length: 1256 (1.2K) [text/html] — ukuran file dan tipe konten dari header respons.Saving to: ‘index.html’ — nama file lokal. Kenapa index.html? Karena URL https://example.com/ berakhir dengan / dan tidak membawa nama file — sesuai aturan penentuan nama di episode 2.saved [1256/1256] — file ditulis lengkap ke disk.Mengapa example.com? Karena domain ini sengaja dicadangkan IANA untuk dokumentasi — stabil, ringan, dan selalu tersedia, jadi aman untuk latihan. Cek hasilnya dengan ls — kalian akan melihat file index.html di direktori kerja.
Important
Aturan emas wget: menulis file ke disk secara default. Berbeda dari curl yang membuang body ke stdout, wget menyimpan hasilnya sebagai file. Jika kalian menjalankan wget URL dan tidak melihat file apa pun, kemungkinan besar kalian menjalankannya di direktori yang salah — cek dengan ls dan pwd sebelum menyalahkan wget.
-OSering kali kalian ingin menyimpan hasil download dengan nama yang kalian tentukan sendiri — misalnya nama yang lebih deskriptif. Opsi -O (atau --output-document) mengatur nama file lokal:
wget -O landing.html https://example.comSekarang file tersimpan sebagai landing.html, bukan index.html. Opsi -O menimpa aturan penentuan nama default dari URL — kalian yang memegang kendali nama file.
Warning
Perhatikan: wget akan menimpa file yang sudah ada tanpa bertanya. Jika landing.html sudah ada, isinya diganti. Untuk download yang aman terhadap penimpaan, kalian bisa menggabungkan dengan -c (resume) yang akan kita bahas di episode 4 — atau pastikan nama file yang dipakai unik.
-O -Ada varian khusus -O: dengan nama file -, wget menulis output ke stdout alih-alih ke disk. Ini pola yang sangat berguna untuk mengambil data dan langsung meneruskannya ke perintah lain — misalnya ke jq untuk membaca JSON:
wget -qO- https://httpbin.org/ip | jqKombinasi -qO- berarti: diam (-q), output ke stdout (-O -). Hasilnya, kalian tidak perlu menyimpan file perantara — data mengalir langsung dari server ke jq. Pola wget -qO- URL | jq ini akan kalian pakai berulang kali sepanjang series.
Tip
Saat -O - dipakai, wget otomatis mematikan progress bar — karena outputnya sedang mengalir, bukan disimpan. Jadi jangan heran jika tidak ada progress; itu justru tanda wget sedang bekerja dengan benar. Untuk file yang besar, wget -O - URL > file.bin juga valid, tapi -O nama lebih sederhana untuk kasus itu.
Secara default wget menampilkan progress bar lengkap dengan persentase di terminal. Ada tiga mode output yang perlu kalian kuasai:
| Opsi | Perilaku |
|---|---|
-q | Sunyi total — tanpa progress, tanpa log (hanya error fatal) |
-nv | Ringkas — informasi penting saja, tanpa progress bar |
-a FILE | Menambahkan (append) log ke FILE — tidak menimpa riwayat |
-q paling cocok untuk script yang ingin output bersih. -nv adalah pilihan tengah yang tetap menampilkan ringkasan penting seperti nama file dan ukuran. -a untuk mencatat riwayat download:
wget -nv -a download.log https://example.comSetelah dijalankan dua kali, download.log akan berisi dua baris riwayat — berguna untuk audit atau debugging download yang bermasalah. Kombinasikan dengan -q di script utama dan -a untuk pencatatan permanen.
Ada juga -S (kita kenalkan di episode 2) yang menampilkan header respons server sebelum body disimpan — coba wget -S https://example.com saat kalian ingin memastikan server mengirim header yang benar:
wget -S https://example.comDi outputnya kalian akan melihat baris seperti HTTP/1.1 200 OK, Content-Type: text/html, dan Content-Length — persis header yang dibahas di episode 0.
Mengira wget menampilkan body ke layar. Wget menulis file; untuk output ke layar pakai -O -. Kebiasaan dari curl ini sering membuat pemula bingung.
Menjalankan di direktori yang salah. File download masuk ke direktori kerja saat ini. Selalu cek pwd sebelum men-download jika lokasi file penting.
Menimpa file yang sudah ada. Wget menimpa tanpa konfirmasi. Jika ingin aman, beri nama unik dengan -O atau gunakan -c (episode 4).
Lupa bahwa URL dengan / menghasilkan index.html. Ini bukan error — itu aturan penentuan nama default wget.
Pada episode 3 ini, kalian telah menjalankan download file pertama: melihat enam tahap transfer dalam praktik, memahami kenapa file bernama index.html, menyimpan dengan nama khusus lewat -O, mengalirkan output ke stdout dengan -O - dan memipanya ke jq, serta menguasai mode output -q, -nv, dan -a bersama -S.
Inti yang harus dibawa pulang:
wget URL menulis file ke disk — nama file berasal dari path URL, atau index.html untuk URL yang berakhir /.-O FILE mengganti nama file; -O - mengalirkan output ke stdout.wget -qO- URL | jq adalah pola cepat untuk membaca data JSON.-q sunyi, -nv ringkas, -a FILE mencatat riwayat tanpa menghapus yang lama.-S memperlihatkan header respons server.Di episode 4 selanjutnya kita akan membahas resume, retry & kontrol download — melanjutkan download yang terputus dengan -c, mengatur percobaan ulang dengan --tries, mengendalikan timeout dan kecepatan dengan --timeout dan --limit-rate, serta menjalankan download di latar belakang dengan -b. Sampai jumpa di episode 4!