2013-09-22 9 views
5

Sto cercando di utilizzare wget per scaricare un file con un nome locale diverso e scaricare solo se il file sul server è più recente.wget :: rinominare i file scaricati e scaricare solo se più recenti

Quello che ho pensato che potevo fare era usare l'opzione -O di wget in modo da essere in grado di scegliere il nome del file scaricato, come in:

wget http://example.com/weird-name -O local-name 

e che si combinano con l'opzione -N che non scarica nulla tranne se il timestamp è più recente sul server. Per le ragioni esposte nei commenti qui sotto, wget rifiuta di combinare entrambe le bandiere:

WARNING: timestamping does nothing in combination with -O. See the manual 
for details. 

tutte le idee su succinte work-around?

+1

Qual è il tuo obiettivo? man wget spiega perché è inutile mischiare -N con -O, poiché: -O non è inteso per significare semplicemente "usa il nome file invece di quello nell'URL;" piuttosto, è analogo al reindirizzamento della shell. In breve, il file di output sarà sempre più recente rispetto al server e nulla verrà scaricato. –

+1

Suppongo che la vera domanda sia "qual è il modo idiomatico in wget/bash per rinominare i file scaricati ** e ** scaricarli solo se sono più recenti sul server" - Ho riformulato la domanda per chiarire questo punto. –

+0

@ecelis se ti capisco e cosa dice 'man wget', giusto, significa che il file '-O' viene sempre riscritto/troncato nel momento in cui esegui' wget' e quindi il suo timestamp è sempre ORA, nel qual caso il download non viene mai attivato. Destra? –

risposta

2

scaricarlo, quindi creare un collegamento

wget -N example.com/weird-name 
ln weird-name local-name 

Dopo di che è possibile eseguire wget -N e funzionerà come previsto:

  • Solo download se più recente
  • Se un nuovo file viene scaricato sarà accessibile da entrambi i nomi, senza che ti costa spazio su disco aggiuntivo
+0

Questo potrebbe funzionare a meno che il motivo per cui stavi usando '-O' è perché stavi scaricando un file dello stesso da diverse fonti nella stessa directory. Ad esempio, se stavi scaricando diversi file robots.txt. –

1

Se si utilizza un altro strumento è possibile nel tuo caso, vi consiglio il libero, open source lwp-mirror:

lwp-mirror [-options] <url> <file> 

Funziona come meglio preferite, senza soluzioni alternative.

Questo comando è fornito dal pacchetto libwww-perl su Ubuntu e Debian, tra le altre cose.

Nota che lwp-mirror non supporta tutte le altre funzioni di wget. Ad esempio, non ti consente di impostare un agente utente per la richiesta come wget.

Problemi correlati