Domanda: Di solito uso wget per scaricare i file. Su alcuni sistemi, wget non è installato ed è disponibile solo curl. Puoi spiegarmi con un semplice esempio su come posso scaricare un file remoto usando curl? Ci sono differenze tra curl e wget?
Risposta: Ad alto livello, sia wget che curl sono utilità della riga di comando che fanno la stessa cosa.
- Entrambi possono essere utilizzati per scaricare file utilizzando FTP e HTTP(s).
- Puoi anche inviare una richiesta HTTP POST usando curl e wget
- Tuttavia curl fornisce API che possono essere utilizzate dai programmatori all'interno del proprio codice. curl usa libcurl che è una libreria multipiattaforma.
- wget è solo uno strumento da riga di comando senza API.
- Curl supporta anche molti più protocolli che wget non supporta. Ad esempio:SCP, SFTP, TFTP, TELNET, LDAP(S), FILE, POP3, IMAP, SMTP, RTMP e RTSP.
- C'è un grande vantaggio nell'usare wget. wget supporta il download ricorsivo, mentre curl no.
Esempi di Wget
L'esempio seguente scarica il file e lo archivia con lo stesso nome del server remoto.
wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
L'esempio seguente scarica il file e lo archivia con un nome diverso rispetto al server remoto. Ciò è utile quando l'URL remoto non contiene il nome del file nell'URL, come mostrato nell'esempio seguente.
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
Altri esempi di wget:The Ultimate Wget Download Guide con 15 fantastici esempi
Esempi di ricci
$ curl -O http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 28 3762k 28 1085k 0 0 72771 0 0:00:52 0:00:15 0:00:37 54267
L'opzione -O (O maiuscola) è importante. Senza questo, curl inizierà a scaricare il file scaricato sullo stdout. Usando -O, scarica i file con lo stesso nome del server remoto. Nell'esempio sopra, stiamo scaricando strx25-0.9.2.1.tar.bz2, quindi anche il file scaricato avrà lo stesso nome.
Invece di -O, puoi anche specificare "–nome-remoto" come mostrato di seguito. Entrambi sono uguali.
$ curl --remote-name http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Durante il download curl fornisce le seguenti informazioni utili:
- % – La % totale del download che è stato completato al momento. Quando arriva al 100% il download è completato. Nell'esempio sopra, ha scaricato solo il 28% del file.
- Totale:la dimensione totale del file
- Ricevuto:la dimensione totale del file che è stato scaricato finora. Nell'esempio sopra, finora ha scaricato 1085k (su un totale di 3762k)
- Xferd – Verrà utilizzato quando carichi alcuni file sul server remoto. Durante il caricamento, questo indicherà la dimensione totale del file che è stato caricato finora. Poiché stiamo scaricando un file, in questo esempio è 0.
- Average Speed Dload:indica la velocità media di download.
- Velocità media di caricamento:durante il caricamento di un file, questo indicherà la velocità media di caricamento
- Tempo totale:indica il tempo totale necessario per scaricare (o caricare) l'intero file in base alla velocità di download (o caricamento) corrente. In questo esempio, ci vorranno circa 52 secondi in totale per scaricare questo file.
- Tempo speso – Il tempo che curl ha impiegato finora per scaricare (o caricare) il file. In questo esempio, sono trascorsi 15 secondi finora.
- Tempo rimasto:viene calcolato in base a "Tempo totale" - "Tempo trascorso".
- Velocità attuale:indica la velocità di download/upload corrente. Confronta questo con il caricamento/caricamento medio con velocità media per vedere la velocità o la lentezza del download del tuo sistema in questo momento.
Se si desidera scaricare il file e memorizzarlo con un nome diverso dal nome del file nel server remoto, utilizzare -o (o minuscola) come mostrato di seguito. Ciò è utile quando l'URL remoto non contiene il nome del file nell'URL, come mostrato nell'esempio seguente.
$ curl -o taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50243 100 50243 0 0 170k 0 --:--:-- --:--:-- --:--:-- 400k
Nell'esempio sopra, non c'è un nome di file nell'URL remoto, chiama semplicemente uno script php che gli passa alcuni parametri. Tuttavia, il file verrà scaricato e salvato come taglist.zip sul tuo sistema locale. Invece di -o, puoi anche specificare "–output".
Altri esempi di curl:15 pratici esempi di comandi cURL di Linux