Memilih file yang benar-benar diinginkan: accept dan reject ekstensi, filter berbasis regex, pembatasan direktori, serta pengendalian struktur direktori hasil download agar rapi dan portabel.

Di episode 10 kalian bisa menyalin seluruh situs. Tapi menyalin seluruh situs jarang benar-benar diinginkan — kadang kalian hanya butuh gambar, hanya halaman dokumentasi, atau hanya file dari satu direktori tanpa direktori-direktori lain. Episode ini membahas filtering: memilih apa yang diunduh, dan struktur direktori: menentukan ke mana file itu disimpan.
Keduanya berjalan beriringan. Filter menentukan isi, struktur menentukan bentuk. Kalian bisa mengunduh tepat sasaran dan menaruh hasilnya di tempat yang rapi — tanpa perlu merapikan manual setelah download selesai.
-A dan -RCara paling langsung mempersempit unduhan adalah lewat daftar ekstensi. -A (accept) hanya mengunduh file dengan ekstensi yang didaftarkan, sedangkan -R (reject) mengunduh segalanya kecuali yang didaftarkan.
wget -r -A jpg,png http://gallery.example.com/wget -r -R mp4,avi,mkv http://media.example.com/Daftar dipisahkan koma. Selain ekstensi, wget juga menerima pola wildcard — -R '*.tmp' misalnya menolak semua file yang berakhiran .tmp. Jika elemen daftar mengandung karakter wildcard *, ?, [, atau ], wget memperlakukannya sebagai pola dan kalian harus mengutipnya agar shell tidak ikut memperluas.
Tip
Hati-hati dengan asumsi: -A jpg,png hanya memengaruhi file yang ditemukan selama rekursi. Halaman HTML di tengah perjalanan tetap diunduh karena dibutuhkan untuk menemukan file lain. Jika kalian juga ingin menolak HTML, daftarkan di -R: wget -r -A jpg,png -R html,htm URL.
--accept-regex dan --reject-regexEkstensi tidak selalu cukup — kadang keputusan harus dibuat dari keseluruhan URL. Untuk itu wget menyediakan --accept-regex dan --reject-regex, yang mencocokkan regex terhadap URL lengkap:
wget -r --accept-regex '.*\.(jpg|png)$' http://gallery.example.com/wget -r --reject-regex '.*/archives/' http://blog.example.com/Regex memberi presisi yang tidak bisa dicapai daftar ekstensi: mencocokkan bagian path, kombinasi ekstensi dengan direktori, bahkan pola versi file. Gunakan regex saat daftar ekstensi mulai terasa kaku — misalnya memfilter laporan dengan format tahun tertentu, --accept-regex '.*report-2026.*\.pdf$'.
-I dan -XKadang keputusan bukan pada jenis file, melainkan pada lokasinya di situs. -I (include) membatasi rekursi pada direktori tertentu, sedangkan -X (exclude) mengecualikan direktori dari perjalanan rekursi:
wget -r -I /docs,/assets http://docs.example.com/wget -r -X /admin,/cgi-bin http://example.com/Kedua daftar menerima wildcard, jadi -X '/old/*' bisa mengecualikan semua subdirektori lama sekaligus. Ini sangat berguna untuk mirror selektif: unduh hanya dokumentasi, atau hindari area yang tidak perlu — tanpa harus menebak-nebak dari isi halaman.
Sekarang pertanyaan keduanya: ke mana file disimpan? Secara default, rekursi menyimpan file di bawah folder bernama host — http://docs.example.com/guide/intro.html menjadi docs.example.com/guide/intro.html di disk. Tiga opsi memberi kendali atas struktur ini:
wget -r -nH http://docs.example.com/-nH (no-host-directories) menghapus lapisan nama host, sehingga hasilnya guide/intro.html. Jika masih ada lapisan path yang ingin dibuang, --cut-dirs memangkasnya:
wget -r -nH --cut-dirs=2 http://docs.example.com/pub/release/Untuk konten yang diunduh di luar rekursi, -x (force-directories) memaksa pembuatan struktur direktori penuh meskipun hanya satu file, sedangkan -nd (no-directories) melakukan kebalikannya: semua file dijatuhkan ke satu folder tanpa hierarki.
wget -x http://docs.example.com/robots.txtTip
Kombinasi -nH dengan --cut-dirs adalah resep untuk mirror yang bersih: wget -r -m -nH --cut-dirs=1 http://docs.example.com/pub/ menyimpan situs seolah-olah kalian menyalin folder pub/ langsung ke direktori kerja — tanpa nama domain dan tanpa prefix yang tidak diinginkan.
--restrict-file-namesTerakhir, detail yang sering dilupakan sampai muncul masalah: aturan penamaan file berbeda antar sistem operasi. Karakter seperti :, ?, *, atau " valid di Unix tapi bermasalah di Windows atau di filesystem ASCII. Opsi --restrict-file-names mengatur karakter apa saja yang boleh dipakai wget saat membuat nama file lokal:
wget -r --restrict-file-names=windows http://docs.example.com/Nilai yang bisa dipilih mencakup unix, windows, ascii, dan nocontrol, dan bisa digabungkan dengan tanda koma — misalnya --restrict-file-names=unix,nocontrol menggabungkan aturan penamaan Unix dengan larangan karakter kontrol. Wget akan mengganti karakter terlarang dengan notasi %HH (misalnya %3F untuk tanda tanya), menjaga hasil download tetap legal di filesystem tujuan.
Note
Gunakan --restrict-file-names=windows saat mirror akan dipindahkan ke Windows atau dipasang lewat mount SMB. Gunakan mode unix,nocontrol saat konten bersifat publik dan harus aman dibuka di banyak mesin. Pilih sejak awal — memperbaiki nama file setelah download selesai jauh lebih menyakitkan daripada mencegahnya sejak perintah dijalankan.
Filter dan struktur jarang dipakai sendiri-sendiri. Skenario nyata: mengunduh dokumentasi proyek untuk dibaca offline, hanya bagian bahasa Inggris dan contoh kode, tanpa hasil build dan tanpa folder server.
wget -r -m -nH \
-I /docs/en \
-X /docs/fr,/server \
-A html,md,png \
--cut-dirs=1 \
http://docs.example.com/Satu perintah menggabungkan semua kemampuan episode ini: rekursi penuh -m, struktur lokal tanpa nama host -nH dan tanpa prefix direktori --cut-dirs=1, hanya direktori Inggris -I, mengecualikan terjemahan dan folder server -X, serta menyaring ekstensi yang berguna -A. Hasilnya: folder dokumentasi yang bersih, ringan, dan siap dibuka offline.
Note
Pahami urutan evaluasi filter: wget menguji setiap URL terhadap semua aturan — direktori (-I dan -X), daftar ekstensi (-A dan -R), dan regex. Aturan yang menolak menang lebih dulu, dan aturan yang menerima tidak menyelamatkan URL yang sudah ditolak. Bayangkan filter kalian sebagai satu gerbang dengan banyak penjaga — semua harus lulus, bukan salah satu.
Episode 11 melengkapi kalian dengan kendali penuh atas isi dan bentuk hasil download: accept dan reject ekstensi dengan -A dan -R, filter presisi dengan --accept-regex dan --reject-regex, pembatasan direktori dengan -I dan -X, pengaturan struktur direktori lewat -nH, --cut-dirs, -x, dan -nd, serta portabilitas nama file dengan --restrict-file-names.
Inti yang harus dibawa pulang: filter menentukan apa yang diunduh, struktur menentukan ke mana file disimpan — dan keduanya harus dirancang bersamaan sejak perintah pertama dijalankan, bukan dirapikan setelahnya.
Di episode 12 berikutnya kita masuk ke lapisan jaringan: proxy HTTP dan SOCKS, autentikasi proxy, manipulasi DNS, serta pemecahan masalah koneksi agar wget tetap berjalan di lingkungan korporat yang kompleks. Sampai jumpa!