Mengunduh file dari server FTP dan FTPS dengan wget, autentikasi via --user dan --password, unduh rekursif seluruh direktori, serta globbing wildcard yang hanya berlaku di FTP, tidak di HTTP.

Di episode 5 kalian sudah mengunduh banyak file sekaligus lewat input file dan batch download. Sekarang kita masuk ke protokol yang justru menjadi akar sejarah wget sendiri: FTP. Sebelum HTTP mendominasi web, FTP adalah cara utama mendistribusikan file lewat internet — dan wget sendiri merupakan turunan dari program Geturl yang sejak awal dibangun untuk mengambil file dari FTP. Wajar jika wget hingga hari ini tetap menjadi klien FTP yang lengkap.
Mengapa episode ini penting? Banyak infrastruktur yang masih bertahan di FTP: mirror arsip software (GNU, distro Linux), data publik milik institusi, hingga NAS internal perusahaan. Kalau kalian bekerja dengan server legacy atau mengautomasi pengambilan data dari sumber FTP, wget adalah alat paling cepat untuk menaklukkannya — tanpa perlu menginstal klien FTP terpisah.
Wget berbicara FTP hanya dengan mengganti skema URL: ftp:// untuk FTP biasa, dan ftps:// untuk FTP over TLS (FTPS). Selebihnya, perintahnya identik dengan HTTP — wget tidak butuh perlakuan khusus:
wget ftp://files.example.com/laporan-2026.pdfFTP itu seperti telepon tanpa enkripsi: siapa pun yang menguasai jalur jaringan bisa menguping perintah, kredensial, maupun isi file yang lewat. FTPS adalah versi yang dibungkus TLS — data dan kredensial dikirim terenkripsi. Aturan praktisnya: selama server menyediakan ftps://, gunakan itu. FTP polos sebaiknya hanya untuk jaringan yang kalian percaya sepenuhnya.
Note
Ada perbedaan perilaku yang perlu disadari: di HTTP, nama file tujuan bisa diatur dengan -O. Di FTP, wget mengambil nama file langsung dari nama file di server, dan struktur direktori di sisi remote ikut direplikasi ke disk lokal — folder laporan/ di server menjadi folder laporan/ di direktori kerja kalian.
--user dan --passwordBanyak server FTP meminta kredensial sebelum mengizinkan akses ke direktori tertentu. Wget menyediakan dua opsi untuk keperluan ini: --user untuk nama pengguna dan --password untuk kata sandinya.
wget --user arman --password 's3cret!' ftp://files.example.com/laporan-2026.pdfDetail yang menyelamatkan banyak orang: jika kalian menyertakan --user tapi tidak menulis --password, wget akan meminta kata sandi secara interaktif di terminal ketika dibutuhkan. Dengan begitu tidak ada alasan untuk menempelkan password ke command history — cukup tulis --user saja dan biarkan wget yang bertanya.
Important
Menulis password langsung di command line berarti password itu tersimpan di history shell dan bisa terlihat lewat daftar proses saat perintah berjalan. Untuk server produksi, lebih aman memakai prompt interaktif, atau menyimpan kredensial di file konfigurasi ~/.wgetrc yang izin aksesnya kalian batasi — topik yang kita bedah di episode 8.
Ada pula cara menaruh kredensial di dalam URL, misalnya ftp://arman:rahasia@files.example.com/laporan-2026.pdf. Pola ini paling rawan bocor karena URL sering tertulis di log, di script, dan di history. Hindari kecuali untuk sekali pakai di mesin pribadi.
Tidak semua server FTP butuh akun. Banyak mirror publik melayani akses anonim: tanpa --user, wget otomatis login sebagai user anonim — wget ftp://ftp.example.com/pub/file langsung berfungsi di arsip publik seperti mirror GNU atau mirror paket distro Linux. Inilah alasan wget tetap menjadi alat pilihan untuk mengambil paket dari mirror publik tanpa menyiapkan akun apa pun.
Untuk kasus di mana kredensial FTP berbeda dari kredensial HTTP pada satu URL, wget juga menyediakan --ftp-user dan --ftp-password yang menimpa nilai umum --user dan --password khusus untuk koneksi FTP. Detail seperti ini jarang dipakai, tapi menyelamatkan kalian saat satu perintah harus menangani beberapa host dengan identitas berbeda.
Salah satu kekuatan wget di FTP adalah menarik seluruh pohon direktori dalam satu perintah. Opsi -r (recursive) membuat wget turun ke semua subdirektori dan mengunduh semua file yang ditemukan:
wget -r ftp://files.example.com/backup/Perintah di atas menarik isi backup/ beserta semua subfolder-nya, lalu mereplikasi struktur direktori tersebut ke disk lokal. Ini sangat berguna untuk sinkronisasi satu arah: ambil seluruh data dari FTP dan jadikan salinan lokal dalam satu perintah. Selama proses berjalan, wget membuat file .listing sebagai catatan daftar direktori untuk keperluan rekursif — file sementara ini dihapus otomatis setelah selesai.
FTP punya keunikan protokol: ia menggunakan dua koneksi sekaligus — satu untuk perintah (port 21) dan satu lagi untuk transfer data. Cara koneksi data itu dibuka menentukan apakah download berhasil di balik firewall dan NAT.
Secara default wget memakai passive mode: klien yang membuka koneksi data, persis dengan arah koneksi HTTP. Mode ini bekerja di hampir semua lingkungan, termasuk di belakang NAT kantor. Beberapa firewall tua hanya mengizinkan active mode, di mana justru server yang menghubungi klien untuk membuka koneksi data. Jika download FTP menggantung atau gagal di tahap transfer, coba aktifkan mode aktif:
wget --no-passive-ftp ftp://files.example.com/laporan-2026.pdfAnaloginya: passive mode seperti menelepon balik — klien yang menghubungi, sehingga aman di balik NAT. Active mode seperti meminta server menelepon ke rumah kalian — butuh pintu yang sengaja dibuka. Dalam praktik modern, passive mode hampir selalu pilihan yang benar, dan opsi --no-passive-ftp hanya kalian butuhkan saat menghadapi lingkungan yang benar-benar lawas.
Saat berhadapan dengan direktori yang berisi banyak file berpola nama serupa — misalnya puluhan file log harian — mengunduh satu per satu tidak masuk akal. Di FTP, wget mendukung globbing: pola wildcard *, ?, dan [] untuk memilih banyak file sekaligus.
wget 'ftp://files.example.com/logs/*.txt'Cara kerjanya menarik: wget tidak mengirim pola wildcard itu ke server. Ia mengambil daftar isi direktori, mencocokkan pola glob secara lokal, lalu mengunduh setiap file yang cocok. Karena itu globbing hanya berfungsi dengan server FTP bergaya Unix (atau yang meniru format daftar Unix ls).
Tip
Selalu kutip URL ber-glob — wget 'ftp://files.example.com/logs/*.txt' — supaya shell tidak ikut memperluas wildcard sebelum wget melihatnya. Jika shell yang memperluas, pola akan berubah menjadi banyak argumen berbeda dan hasilnya bukan yang kalian harapkan. Kalau ingin mematikan globbing sama sekali, gunakan opsi --no-glob.
Inilah bagian yang paling sering membingungkan pemula: pola wildcard yang sama tidak bekerja di HTTP.
| Protokol | Perilaku wildcard | Penjelasan |
|---|---|---|
| FTP | Diperluas oleh wget | Wget membaca daftar direktori, mencocokkan pola, lalu mengunduh yang cocok |
| HTTP | Dikirim apa adanya | Wget meminta URL literal *.txt ke server, biasanya berakhir 404 |
Analogi yang membantu: FTP itu seperti lemari arsip yang bisa kalian buka dan pilih berkas langsung dari labelnya. HTTP itu seperti layanan antar — kalian memberikan alamat lengkap, dan tidak ada konsep "ambil semua yang namanya diawali X". Karena itu wget 'ftp://host/dir/*.txt' mengunduh banyak file, sedangkan perintah serupa dengan URL HTTP hampir pasti gagal.
Semua kemampuan di episode ini jarang dipakai terpisah. Skenario nyata yang sering muncul di lapangan: menarik seluruh arsip laporan dari FTP internal, hanya file PDF, lengkap dengan autentikasi — dalam satu perintah:
wget -r --user arman \
--accept pdf \
ftp://files.example.com/arsip/Satu perintah menangani tiga hal sekaligus: turun ke semua subdirektori, login dengan identitas arman, dan hanya menyimpan file PDF. Untuk arsip yang sensitif, tinggal ganti skema menjadi ftps:// — wget -r ftps://files.example.com/arsip/ — dan seluruh transfer berjalan terenkripsi. Kombinasi semacam inilah yang membuat wget tetap menjadi andalan admin untuk transfer data massal antar server.
Episode 6 melengkapi kalian dengan kemampuan transfer via FTP: URL ftp:// dan ftps://, autentikasi dengan --user dan --password beserta prompt interaktif, unduh rekursif direktori dengan -r, globbing wildcard untuk memilih banyak file sekaligus, dan pemahaman kenapa globbing tidak berlaku di HTTP.
Inti yang harus dibawa pulang: FTP di wget bukan sekadar alternatif HTTP — ia protokol dengan perilaku unik yang perlu kalian pahami perbedaannya, mulai dari replikasi struktur direktori, globbing, hingga keamanan kredensial. Dan selalu pilih FTPS untuk data yang sensitif.
Di episode 7 berikutnya kita kembali ke HTTP untuk urusan yang lebih halus: mengirim request dengan header kustom, mengganti User-Agent, mengirim data POST, serta mengelola cookie dan Basic Auth. Sampai jumpa di episode 7!