Višenitno preuzimanje datoteka za Linux
Kada se velika datoteka preuzima s jednog HTTP ili FTP poslužitelja pomoću uobičajenog alata kao što su curl ili wget, otvara se jedna TCP veza i datoteka se preuzima sekvencijalno. Na brzoj mreži brzinu mogu ograničiti ograničenje brzine poslužitelja po vezi, TCP slow start ili kašnjenje povratnog puta. Alati za paralelno preuzimanje istodobno otvaraju više veza prema istom izvoru, pri čemu svaka dohvaća različiti raspon bajtova, a zatim lokalno ponovno sastavljaju rezultat. To funkcionira samo ako poslužitelj prihvaća HTTP Range zahtjeve (odgovara statusom HTTP 206 Partial Content); na poslužiteljima koji to podržavaju rezultat je često primjetno brži prijenos nego kod alata koji koristi jedan tok.
U ovom članku izraz „višenitno preuzimanje” odnosi se na ovaj model paralelnih veza, a ne na korištenje niti unutar samog procesa preuzimanja.
U ovom se članku obrađuju dva takva alata za Linux: Axel i aria2.
Axel
Axel je lagani alat za preuzimanje putem naredbenog retka. Otvara više veza prema jednom izvoru i paralelno preuzima različite raspone bajtova. Podržava HTTP, HTTPS, FTP i FTPS te omogućuje nastavak prekinutog preuzimanja.
Instalacija Axela
Na Debianu i Ubuntuu:
sudo apt install axel
Na sustavima RHEL, CentOS Stream, AlmaLinux i Rocky Linux najprije omogućite EPEL:
sudo dnf install epel-release sudo dnf install axel
Na Fedori:
sudo dnf install axel
Korištenje Axela
Osnovno preuzimanje:
axel https://nl.lg.introserv.eu/1000MB.test
Zastavica -a omogućuje kompaktni pokazatelj napretka:
axel -a https://nl.lg.introserv.eu/1000MB.test
Maksimalnu brzinu preuzimanja u bajtovima u sekundi možete ograničiti pomoću -s (ili --max-speed). Na primjer, za ograničenje prijenosa na 500 KB/s:
axel --max-speed=512000 https://nl.lg.introserv.eu/1000MB.test
Datoteku spremite pod drugim nazivom pomoću -o:
axel -o gigabyte.test https://nl.lg.introserv.eu/1000MB.test
Broj paralelnih veza postavite pomoću -n:
axel -n 10 https://nl.lg.introserv.eu/1000MB.test
Nastavite djelomično preuzetu datoteku pomoću -c:
axel -c https://nl.lg.introserv.eu/1000MB.test
Kada se koristi -c, ako lokalna datoteka s istim nazivom već postoji, Axel nastavlja preuzimanje od mjesta na kojem je prekinuto umjesto da počinje ispočetka.
aria2
aria2 podržava isti način paralelnog preuzimanja kao Axel, ali nudi širi skup značajki. Podržava HTTP, HTTPS, FTP, SFTP, BitTorrent i Metalink, a istu datoteku može dohvaćati iz više izvora istodobno. Kao i Axel, dijeli datoteku na segmente i preuzima ih paralelno.
Ključne značajke:
- podesiv broj veza prema poslužitelju, veličina segmenata i ukupna razina istodobnosti
- automatski nastavak prekinutih preuzimanja
- provjera integriteta na temelju kontrolnih zbrojeva
- podrška za HTTPS i FTPS
- izvorni BitTorrent i Metalink klijenti
Instalacija aria2
Na Debianu i Ubuntuu:
sudo apt install aria2
Na sustavima RHEL, CentOS Stream, AlmaLinux i Rocky Linux:
sudo dnf install aria2
Na Fedori:
sudo dnf install aria2
Korištenje aria2
Osnovno preuzimanje:
aria2c https://nl.lg.introserv.eu/1000MB.test
Preuzmite istu datoteku istodobno s dva zrcalna poslužitelja. aria2 kombinira veze prema oba izvora i lokalno ponovno sastavlja datoteku:
aria2c "https://nl.lg.introserv.eu/1000MB.test" "https://uk.lg.introserv.eu/1000MB.test"
Kombinirajte HTTP i FTP izvore uz navođenje FTP vjerodajnica:
aria2c --ftp-user=<USER> --ftp-passwd=<PASSWD> "ftp://<ftpserver_ip>/<file>" "https://uk.lg.introserv.eu/1000MB.test"
Otvorite osam paralelnih veza prema jednom poslužitelju i podijelite datoteku na osam segmenata:
aria2c -x8 -s8 https://nl.lg.introserv.eu/1000MB.test
Zastavica -x (ili --max-connection-per-server) ograničava broj veza koje aria2 otvara prema jednom poslužitelju (zadano je 1). Zastavica -s (ili --split) određuje maksimalan broj segmenata na koje se datoteka dijeli (zadano je 5). Za jedan izvor stvarni broj paralelnih veza jednak je manjoj od te dvije vrijednosti: -x8 -s5 otvara 5 veza, a -x5 -s8 također otvara 5. Da biste ostvarili 8 paralelnih veza prema jednom poslužitelju, obje vrijednosti moraju biti povećane, zbog čega se obično postavljaju na isti broj.
Zastavica -k (ili --min-split-size) određuje najmanju veličinu dijela na koji se datoteka može podijeliti. Manje vrijednosti omogućuju više paralelnih segmenata, ali povećavaju dodatno opterećenje:
aria2c -x8 -s8 -k1M https://nl.lg.introserv.eu/1000MB.test
-x, -s i -j rješavaju različite zadatke. -x određuje broj veza prema jednom poslužitelju prilikom preuzimanja jedne datoteke. -s određuje na koliko se segmenata dijeli jedna datoteka. -j (ili --max-concurrent-downloads) određuje koliko zasebnih datoteka aria2 preuzima istodobno.
Preuzmite dvije datoteke paralelno:
aria2c -j2 https://nl.lg.introserv.eu/1000MB.test https://uk.lg.introserv.eu/1000MB.test
Nastavite djelomično preuzetu datoteku pomoću -c:
aria2c -c https://nl.lg.introserv.eu/1000MB.test
Kada se koristi Metalink datoteka, aria2 može automatski odabrati zrcalne poslužitelje, provjeriti preuzete podatke prema kontrolnim zbrojevima navedenima u Metalinku i ponovno pokušati preuzimanje s neuspješnih zrcalnih poslužitelja bez ručne intervencije.
Za ponovljenu upotrebu aria2 čita zadane opcije iz datoteke ~/.aria2/aria2.conf ako ona postoji. Vrijednosti kao što su max-connection-per-server i split stoga se mogu postaviti jednom u toj datoteci umjesto da se navode pri svakom pokretanju.
Otvaranje velikog broja paralelnih veza prema javnom zrcalnom poslužitelju ili CDN-u može kršiti pravila korištenja operatora i dovesti do ograničavanja brzine ili privremene zabrane. Za javne izvore koristite umjeren broj veza (4 do 8 obično je siguran raspon); veće vrijednosti koristite samo na infrastrukturi za koju je poznato da ih dopušta.
Kada su paralelna preuzimanja korisna?
Paralelna preuzimanja najučinkovitija su kada je usko grlo ograničenje brzine poslužitelja po vezi ili ograničenje ukupne propusnosti pojedinog izvora, a ne lokalni disk ili mrežna veza u cjelini. Ako je veza već u potpunosti iskorištena, otvaranje dodatnih veza neće povećati ukupnu propusnost; samo će je preraspodijeliti. Neki HTTP poslužitelji također odbijaju Range zahtjeve ili ograničavaju broj istodobnih veza jednog klijenta. U tom slučaju alat s jednom vezom, kao što je wget, može biti jednako brz kao Axel ili aria2.