Ho cercato axelsu Gufran raccomandazione s' ma enormemente mi ha deluso. Il mio obiettivo era quello di trovare un sostituto della CLI DownThemAllperché impugna la CPU e il disco rigido e rallenta l'intero sistema anche su un Mac Pro a 8 core. Volevo anche un sostituto multithread per wgetecurl , non un po 'di kludge di uno script che esegue più istanze di questi. Quindi ho cercato ulteriormente e ho trovato quello che penso in questo momento è l'ultimo downloader CLI multithread più moderno che ci sia - aria2 . Il grosso problema che ho avuto è axelstato il fatto che "simulava" il download di file su SSL. L'ho beccato a farlo contcdump . Stava scaricando i httpscollegamenti come di consuetohttp. Questo mi ha davvero fatto incazzare e se non avessi controllato, avrei avuto un falso senso di sicurezza. Dubito che molte persone siano a conoscenza di questa grave violazione della sicurezza. Tornando a aria2, è più avanzato di qualsiasi altro downloader. Supporta i protocolli HTTP (S), FTP, BitTorrent e Metalink, è multipiattaforma ed è una guerriglia da download. Massimizza la larghezza di banda del mio ISP senza carico sulla CPU o sul disco rigido, a differenza di DTA. La pagina man è gigantesca. Non userò mai più di alcune delle sue molte opzioni. E oh, a proposito, ho controllato le sue prestazioni SSL contcdump ed è solido, non falso. Ho scritto una sceneggiatura che imita il comportamento di DTA, se non la sua convenienza.
Il comando di base che uso per ottenere la massima larghezza di banda è
aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL
-cconsente la continuazione del download se viene interrotto, -x 10e-s 10 permettono fino a 10 connessioni per server e -d "mydir"file di output alla directorymydir .
aria2files.sh:
#!/bin/bash
filename="$1" # get filename from command line argument
while read -r line
do
if [ "$line" ] # skip blank lines
then
if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
then
echo "URL: '$line'"
aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
else # line contains a directory name, create directory if not already present
echo "Directory: '$line'"
currdir="$line"
if [ ! -d "$currdir" ]
then
mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
fi
fi
fi
done < "$filename"
Legge un file di testo nel formato:
files.txt:
dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…
Lo script legge il nome file dalla riga di comando:
aria2files.sh files.txt
Crea le directory e le scarica. Può creare directory nidificate come mostrato nel secondo esempio.
Per maggiori dettagli vedere il mio post script Bash per scaricare file da URL in directory specificate elencate in un file di testo .