Ecco il link a quella discussione: viewtopic.php?f=20&t=33902&p=298679&sid ... 35#p298679
Praticamente volevo utilizzare wget in uno script, adattandone però un po' meglio l'output in modo da visualizzarne solamente la barra discorrimento senza tutta la sessione di dialogo col server. Alla fine era venuto fuori che si può fare con un programma chiamato "pv". Ecco come si può usare:
Codice: Seleziona tutto
wget -q -O - "$URL" | pv -s $SIZE> ${filescaricato}
Poi si redirige con un pipe l'output (cioè il file che si sta scaricando) a "pv" specificando con l'opzione "-s" la dimensione totale del file ($SIZE va definita preventivamente, o amano o usando per esempio wget in spider mode, vedi topic linkato all'inizio).
Infine l'output di pv (che rappresenta ancora i dati in download) viene inviato al file locale di destinazione.
Qual'è il problema?
La funzione di resume che mi è indispensabile se ne va a donnine. Sì perchè aggiungendo l'opzione "-c" di wget al comando sopra riportato si avrebbe qualcosa del genere:
Codice: Seleziona tutto
wget -c -q -O - "$URL" | pv -s $SIZE> ${filescaricato}
- infatti wget confronta i dati remoti con lo "stout" e non con un file.
- noto anche che la redirezione finale in ogni caso andrebbe sostituita con ">>", ma quello è un altro discorso che non elimina il problema.
Servirebbe insomma un modo per forzare wget a utilizzare come termine di paragone col file remoto, il file locale parzioalmente scaricato e allo stesso tempo istruirlo in modo che sputi i nuovi dati non direttamente sul file locale, ma sullo stdout in modo da poter sfruttare "pv".
Non conoscendo bene pv, ipotizzo un altro punto di vista:
- mettiamo di avere un file che sta crescendo (pensando al file locale che "ospiterà" i dati in download
- sappiamo quale dovrà essere la sua dimensione totale $SIZE
Ecco, in tale ottica servirebbe un modo per sfruttare "pv" a "monitorare quel file" in modo che ne rappresenti la crescita con la sua barra di avanzamento. Non so se mi sono spiegato.
Trovato il modo allora si potrebbe usare wget normalmente:
Codice: Seleziona tutto
wget -c -O ${filescaricato} "$URL"
Però bisognerebbe prendere in input non la parte parzialmente scaricata e basta, cioè bisognerebbe prendere in input il "flusso" di dati che stanno accrescendo il file.
Probabilmente sono stato un po' aggrovigliato nel rendere l'idea, spero sia passato il senso della questione.
Avete idee?