Tentativi persistenti che riprendono i download con arricciatura


17

Sono su un Mac e ho un elenco di file che vorrei scaricare da un server ftp. La connessione è un po 'difettosa, quindi desidero riprovare e riprendere se la connessione viene interrotta.

So di poterlo fare con wget, ma sfortunatamente Mac OS X non viene fornito con wget. Potrei installarlo, ma per farlo (a meno che non abbia perso qualcosa) devo prima installare XCode e MacPorts, che vorrei evitare.

Curl è disponibile anche se sembra, ma non so come funzioni o come usarlo davvero. Se ho un elenco di file in un file di testo (un percorso completo per riga, come ftp: // user: pass @ server / dir / file1 ) come posso usare curl per scaricare tutti quei file? E posso farmi arricciare per non mollare mai? Come, riprovare all'infinito e riprendere i download da dove si era interrotto e così via?

Risposte:


20

Dopo aver cercato su Google e leggendo un uomo e così per un po 'ho trovato una soluzione che ha funzionato per me:

curl ftp://server/dir/file[01-30].ext --user user:pass -O --retry 999 --retry-max-time 0 -C -
  • [01-30] lo farà scaricare 30 file denominati file01.ext, file02.ext e così via
  • --user user:pass dovrebbe essere ovvio
  • -O per l'output in file con nome originale
  • --retry 999 per riprovare 999 volte
  • --retry-max-time 0per evitare che si interrompano i ritiri. Il comportamento predefinito se non si specifica un --retry-delay fisso è di dormire prima un secondo tra i tentativi, quindi raddoppiandolo, fino a quando non raggiunge i 10 minuti. tra i tentativi
  • -C -per farlo continuare da dove è caduto (se si esegue di nuovo il comando). Il trattino in seguito gli dice di capire da dove riprendere

Se invece qualcuno sa come ottenere i nomi dei file da un file, per favore fatemelo sapere.


Nella pagina man dice quanto segue:

--url <URL>
Specifica un URL da recuperare. Questa opzione è utile soprattutto quando si desidera specificare gli URL in un file di configurazione.

Sembra che potrebbe essere qualcosa, ma non capisco bene come sarebbe usato ...


2

È possibile utilizzare l'opzione -K per arricciare per specificare un file di configurazione. In tal caso, si utilizza la sintassi:

optionname=<value>

Se hai un file contenente un elenco di URL, puoi usare l'arricciatura in questo modo:

sed 's/\(.*\)/-O\nurl=\1/g' url_list.txt | curl -K -

che trasforma un elenco di URL, come:

http://host1.com/foo.html
http://host2.com/bar.html

in un formato come questo:

-O
url=http://host1.com/foo.html
-O
url=http://host2.com/bar.html

Curl lo legge e interpreta ognuna di quelle opzioni simili.

HTH,

Adamo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.