Salta il download se esistono file in wget?


Risposte:


269

Prova il seguente parametro:

-nc, --no-clobber: salta i download che verrebbero scaricati su file esistenti.

Esempio di utilizzo:

wget -nc http://example.com/pic.png

34
-ncnon impedisce l'invio della richiesta HTTP e il successivo download del file. Semplicemente non fa nulla dopo aver scaricato il file se il file è già stato completamente recuperato. Esiste un modo per impedire la richiesta HTTP se il file esiste già? stackoverflow.com/questions/33203898/...
ma11hew28

8
Come notato sulla domanda collegata, non sono d'accordo - Se si utilizza no-clobber e il nome file esiste, esce. Nessuna richiesta HEAD anche. Anche se non fosse così, controlla se hai un file per cominciare :-)[ ! -e "$(basename $URL)" ] && wget $URL
plundra

3
Penso che potrei ottenere risultati diversi perché sto usando l' --recursiveopzione.
ma11hew28,

197

L' opzione -nc, --no-clobbernon è la soluzione migliore in quanto i file più recenti non verranno scaricati. Si dovrebbe usare -Ninvece quello che scaricherà e sovrascriverà il file solo se il server ha una versione più recente, quindi la risposta corretta è:

wget -N http://www.example.com/images/misc/pic.png

Quindi eseguendo Wget con -N, con o senza -ro -p, la decisione se scaricare o meno una copia più recente di un file dipende dal timestamp locale e remoto e dalle dimensioni del file. -ncnon può essere specificato contemporaneamente a -N.

-N, --timestamping: Attiva il timestamp.


39
Quando il server non è configurato correttamente -Npotrebbe non funzionare e wget verrà sempre scaricato nuovamente. Quindi a volte -ncè la soluzione migliore.
utente

2
quale potrebbe essere lo scenario applicabile in cui si verificherebbe "Quando il server non è configurato correttamente"?
AjayKumarBasuthkar,

quando si esegue il download da un percorso copiato, modificando tutti i timestamp.
Robert,

Se questo è meglio dipende dal contesto. Ad esempio, sto scaricando ~ 1600 file da un elenco, quindi ho aggiornato l'elenco per includere altri file. I file non cambiano, quindi non mi interessa l'ultima versione e non voglio che controlli sul server le nuove versioni dei 1600 file che ho già.
JBentley,

2
@AjayKumarBasuthkar: quando il server non supporta alcun modo di verificare la presenza di un file più recente, wgetsi lamenterà Last-modified header missing; questa è esattamente la situazione descritta.
Piskvor lasciò l'edificio il

23

Quando si esegue Wget con -ro -p, ma senza -N, -ndo-nc , il ri-download di un file comporterà la nuova copia semplicemente sovrascrivendo il vecchio.

Quindi l'aggiunta -ncimpedirà questo comportamento, causando invece la conservazione della versione originale e l'ignoramento di eventuali copie più recenti sul server.

Vedi maggiori informazioni su GNU.


18

La risposta che stavo cercando è su https://unix.stackexchange.com/a/9557/114862 .

L'uso del -cflag quando il file locale ha dimensioni maggiori o uguali alla versione del server eviterà il nuovo download.


1
Questo è particolarmente utile quando stai scaricando un mucchio di file con il flag -i. wget -i filelist.txt -criprenderà il download non riuscito di un elenco di file.
Trevor,
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.