Pada episode ini kalian mengunduh banyak URL sekaligus dari satu file teks dengan opsi -i, memahami format per-baris lengkap dengan opsi per-URL dan komentar, serta mengelola antrean download besar menggunakan max-concurrent-downloads.

Di episode 5 kalian sudah memecah satu file menjadi beberapa koneksi paralel dan melanjutkan download yang terputus dengan --continue. Sampai di situ, satu perintah masih berarti satu file. Padahal kebutuhan nyata di lapangan jarang sesederhana itu: kalian punya 50 file ISO dari mirror staging, 30 paket dataset, atau 100 arsip log yang harus ditarik sekaligus. Menjalankan perintah satu per satu adalah pemborosan waktu dan rawan salah. Episode ini memperkenalkan mode batch aria2 — mengunduh banyak URL dari satu file teks, mengatur opsi per-URL, sampai mengelola antrean puluhan bahkan ratusan download dalam satu proses.
Kenapa ini penting? Karena dalam otomasi, banyak hal sekaligus adalah keadaan normal, bukan pengecualian. aria2 didesain sebagai download manager, bukan sekadar klien: ia menerima daftar pekerjaan, menjalankan sebagian secara paralel, lalu menyelesaikan sisanya secara berurutan. Justru kemampuan itulah yang membedakan aria2 dari wget atau curl.
Inti mode batch adalah opsi -i alias --input-file. Daripada menulis URL di argumen perintah, kalian taruh semua URL dalam satu file teks — satu baris satu URL — lalu beri path file tersebut ke aria2.
https://cdn.example.com/linux.iso
https://cdn.example.com/tools.zip
https://cdn.example.com/docs.tar.gzaria2c -i urls.txt -d /tmp/downloadsSatu perintah, tiga file. aria2 membaca setiap baris sebagai satu download item dan mengerjakan semuanya dalam satu proses yang sama. Satu detail yang sering menjebak: URL di dalam input file tidak boleh dibungkus tanda kutip. Berbeda dengan di shell, isi file ini dibaca mentah oleh aria2 — kutipan justru dianggap bagian dari URL dan download pun gagal.
Tip
Input file juga bisa dibaca dari stdin dengan aria2c -i -. Ini memungkinkan kalian menyusun daftar URL lewat pipeline, misalnya grep '\.iso$' daftar.txt | aria2c -i - — kombinasi yang sangat berguna di script.
Input file bukan sekadar daftar URL. Formatnya punya tiga fitur: satu baris untuk satu entitas file, beberapa URL mirror dalam baris yang sama, dan baris opsi khusus yang mengikuti sebuah URL.
https://cdn1.example.com/file.iso https://cdn2.example.com/file.iso
split=8
https://cdn1.example.com/backup.tar.gz
dir=/data/backup
out=backup-2026.tar.gzPenjelasan baris demi baris:
split=8 memaksa delapan koneksi untuk file ISO, sementara dir= dan out= mengatur tujuan file backup.out=. Berguna saat nama di server tidak deskriptif, misalnya URL panjang dengan parameter disimpan sebagai out=rilis.zip.Perlu dicatat, opsi dir pada baris opsi bersifat per-URL, sedangkan -d di command line bersifat global. Yang lebih spesifik selalu menang.
Baris yang dimulai dengan # dianggap komentar dan dilewati. Manfaatnya bukan hanya kosmetik — daftar download yang panjang tanpa label akan sulit dipelihara, apalagi jika dikerjakan bergantian oleh beberapa orang dalam tim.
# ISO sistem operasi - mirror lokal
https://mirror.local/ubuntu.iso https://mirror.backup/ubuntu.iso
# Paket tooling versi terbaru
https://cdn.example.com/go.tar.gz
https://cdn.example.com/node.tar.gzKetika file berisi banyak URL, aria2 menciptakan sebuah antrean. Secara default ia menjalankan hingga lima item sekaligus — nilai dari --max-concurrent-downloads — dan sisanya menunggu di antrean. Item yang selesai keluar dari antrean, lalu item berikutnya masuk menggantikan.
Bayangkan sebuah supermarket dengan beberapa kasir. --max-concurrent-downloads adalah jumlah kasir yang buka; daftar URL adalah antrean pembelinya. Mengatur nilai ini artinya mengendalikan berapa banyak download berjalan bersamaan tanpa membuat semuanya rebutan bandwidth. Set ke 2 untuk download tenang di koneksi kecil, set ke 10 untuk menarik banyak file sekaligus di server bervolume tinggi.
aria2c -i urls.txt -j 6 -x 4 -d /tmp/downloadsJangan rancu dengan opsi -x (--max-connection-per-server) di episode 5: -x mengatur koneksi di dalam satu file, sedangkan -j mengatur jumlah file yang diproses bersamaan. Keduanya bekerja pada lapisan berbeda dan saling melengkapi.
Semakin besar antrean, semakin penting beberapa pengaturan berikut:
--deferred-input=true — aria2 tidak lagi membaca seluruh isi input file di awal, melainkan per item saat dibutuhkan. Ini menghemat memori saat antrean berisi ratusan ribu URL: aria2c -i urls.txt --deferred-input=true.--max-download-result=<NUM> — membatasi berapa banyak riwayat hasil download yang disimpan dalam memori setelah selesai. Berguna agar proses batch yang sangat panjang tidak menumpuk memori.--save-session=<FILE> — menyimpan status semua download (termasuk yang masih berjalan) ke sebuah file. Di sesi berikutnya, jalankan aria2c -i session.txt dan antrean melanjutkan dari posisi terakhir — seperti --continue tetapi untuk seluruh antrean.Kombinasi --save-session dan --deferred-input sangat direkomendasikan untuk job download besar yang berjalan semalaman atau direstart berkala.
Satu pengingat tambahan: daftar opsi yang sah untuk input file cukup panjang — bahkan continue=true bisa menjadi baris opsi per-URL untuk memastikan tiap item di-resume bila terputus. Daftar lengkapnya bisa dibaca di dokumentasi resmi aria2 pada bagian Input File.
Input file tidak harus diketik manual. Karena bentuknya teks polos, daftar URL bisa lahir dari perintah lain — dan di sinilah batch download menjadi benar-benar kuat. Contoh sederhana: kalian punya daftar nama arsip dan ingin menyusun URL-nya secara terprogram.
ls /data/backup/*.tar.gz | \
sed 's#^#https://cdn.example.com/backup/#' > daftar-untuk-unduh.txt
aria2c -i daftar-untuk-unduh.txt -j 3Skrip semacam ini bisa ditanam di cron untuk sinkronisasi berkala: daftar dibuat, diunduh, dan hanya file yang benar yang ikut masuk. Kombinasikan dengan --continue dan --save-session, dan kalian memiliki pipeline sinkronisasi yang bisa dijalankan ulang tanpa takut kehilangan progres.
Tip
Karena input file dibaca mentah tanpa ekspansi shell, jangan gunakan karakter khusus seperti $ atau tanda kutip di dalamnya. Jika URL mengandung karakter yang biasa di-escape di shell, tulis apa adanya — itulah yang diharapkan aria2.
Pada episode 6 ini kalian sudah naik level dari klien satu-file menjadi download manager batch: membaca daftar URL dari input file dengan -i, memanfaatkan format per-baris dengan mirror dan opsi per-URL, mendokumentasikan antrean lewat komentar, membatasi paralelisme dengan --max-concurrent-downloads, dan mengelola antrean besar dengan --deferred-input serta --save-session.
Yang paling penting untuk dibawa pulang: input file mengubah cara berpikir tentang download — dari perintah menjadi data. Daftar URL kini bisa dibuat, dipelihara, dan diproses seperti data biasa: digenerate, difilter, dan diantrekan secara otomatis.
Di episode 7 berikutnya kita berpindah protokol — dari HTTP ke FTP dan SFTP: autentikasi, download direktori, serta perbedaan perilaku keduanya. Sampai jumpa!