wget "perpetuo"

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

wget "perpetuo"

Messaggioda joe » ven dic 10, 2010 12:52

Sto scaricando un ramo slackware con wget.
Ho una connessione che di tanto in tanto tende a cadere.
Sono in grado di predisporre uno script che riconnetta automaticamente pur impiegando qualche manciata di secondi.
Risultato, wget esce dal download e nonostante la connessione sia stata riportata in piedi... troppo tardi wget è già terminato.

A me serve scaricare in modo non presidiato. Quale opzione devo dare a wget in modo che resti lì aspettando e ritentando di tanto in tanto finchè non trova la connessione nuovamente up?

Avatar utente
simplex
Linux 2.x
Linux 2.x
Messaggi: 327
Iscritto il: mer lug 27, 2005 0:00
Slackware: current
Desktop: xfce
Contatta:

Re: wget "perpetuo"

Messaggioda simplex » ven dic 10, 2010 13:19

fai uno script che ogni tot minuti controlla se e' ancora up oppure lo rilancia.
e usa rsync se puoi, wget fa un sacco di traffico inutile.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: wget "perpetuo"

Messaggioda joe » ven dic 10, 2010 14:23

La soluzione che proponi è concettualmente la più semplice, avevo già pensato ad una cosa del genere, però comporta un sacco di traffico inutile:

per esempio sto scaricando il ramo stabile di slackware, si tratta di tanti files... e wget appena parte ovviamente deve ricontrollare tutte le subdir per capire la roba che ha già scaricato e per continuare dal punto in cui aveva smesso di scaricare a causa della linea caduta...

Invece se ci fosse un'opzione che consenta al programma di non chiudersi e di ritentare ogni tot anche se la connessione appare al momento down, questo consentirebbe di risparmiarci il controllo iniziale.
Inoltre si eviterebbe la necessità di uno script ulteriore, di test conseguenti, modifiche ecc ecc.

Rsync è qualcosa che funziona se supportato lato server. Non vi sono molti server rsync.
Wget funziona senza problemi sia via http che ftp (anche se via http non ho testato il download del ramo slackware).

Anche lato client sembra messo meglio, per esempio al momento ho condotto il download da windows, nonostante abbia cercato un clone di rsync, non ne ho trovato... invece wget funziona bene.

Avatar utente
simplex
Linux 2.x
Linux 2.x
Messaggi: 327
Iscritto il: mer lug 27, 2005 0:00
Slackware: current
Desktop: xfce
Contatta:

Re: wget "perpetuo"

Messaggioda simplex » ven dic 10, 2010 15:03

capisco, allora ti consiglio lftp, sempre per il fatto che wget fa traffico per niente. davvero.

Avatar utente
conraid
Staff
Staff
Messaggi: 13114
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: wget "perpetuo"

Messaggioda conraid » ven dic 10, 2010 15:49

prova l'opzione timeout, guarda il man per i dettagli
però concordo con simplex che è la peggiore soluzione da adottare, tra l'altro i server rsync non saranno quanto quelli ftp, ma sono i principali e più aggiornati
per il discorso client su windows, cygwin per cominciare e poi ci sono vari client. Ma spero che ci siano client come lftp che fanno da mirroring in modo bidirezionale anche per windows

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: wget "perpetuo"

Messaggioda joe » ven dic 10, 2010 18:29

Allora sono io che ignoravo la faccenda.
Credevo che un client come lftp fosse identico a wget per quanto riguarda il download da ftp.

- Domanda numero 1
Perchè esattamente lftp farebbe meno traffico? è parecchio che non lo uso e non ricordo cos'abbia di diverso rispetto wget... aparte che è anche interattivo se non ricordo male.

wget, lftp eccc ecc li usavo anche su windows nella vecchia installazione dove avevo un ambiente cygwin piuttosto carrozzato.
Tuttavia cygwin porta via spazio e nella mia installazione windows di test sono sui 7GB disponibili. Sto provando ad installare un parco software tagliato sulle mie esigenze anche per vedere quanto HD concedere a windows, contavo di stare nei 10GB..
Ci sarà pure qualcosa di compatibile e nativo, non ho cercato troppo bene forse. Ho installato wget e mi sono intestato a farlo funzionare al meglio. Evidentemente come dite anche voi nonè lo strumento migliore.
Però in parecchie guide (che comunque ok, non sono la bibbia) viene reclamizzato anche come strumento di mirroring di interi siti.

- Domanda numero 2
Getslack punta a moltissimi server "http" che predispongono il ramo/i slackware. Volendo sfruttare anche questo protocollo cosa si usa?

Avatar utente
conraid
Staff
Staff
Messaggi: 13114
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: wget "perpetuo"

Messaggioda conraid » ven dic 10, 2010 18:37

1) perché non scarica i vari index, etc... che ci sono anche in ftp, ma sinceramente wget per ftp non l'ho mai utilizzato.
Di diverso ha che è un client ftp
2) wget o curl, con le opzioni --connect-timeout (come ti ho detto guardo il man, altrimenti vai poco avanti), ma non la vedo la soluzione migliore.

p.s.
non conosco windows e non so se esistono programmi particolari che ti permettono di scaricare solo quel che vuoi, magari c'è qualcosa di nativo senza stare a fare il porting di qualcosa

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: wget "perpetuo"

Messaggioda joe » ven dic 10, 2010 19:41

Quell'opzione è la prima che avevo adocchiato solo che non funge come pensavo.
Ecco il comando che uso da propt del dosper scaricare il ramo stabile di slackware (13.1).

Codice: Seleziona tutto

wget --limit-rate=15k --dns-timeout=12000000 --connect-timeout=120000 --waitretry=5 -N -t 0 --retry-connrefused -r --no-parent -c -l inf -X "/slackware-13.1/extra/source","/slackware-13.1/pasture/source","/slackware-13.1/source","/slackware-13.1/testing" ftp://ftp.slackware.at/slackware-13.1/


Però non sembra funzionare come pensavo... quando si disconnette da internet, non fa in tempo a riconnettersi che wget è terminato.
Farò una prova mirata magari.

Comunque a parte i vari index... che son files di testo abbastanza ridotti no... lo spreco di banda sta tutto lì?



EDIT:
prova al volo:

Codice: Seleziona tutto

C:\software-win>wget --limit-rate=5k --connect-timeout=120000 -c ftp://ftp.slackware.at/slackware-13.1-iso/slackware-13.1-install-d1.iso
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = d:\Programmi\GnuWin32/etc/wgetrc
--2010-12-10 19:19:06--  ftp://ftp.slackware.at/slackware-13.1-iso/slackware-13.1-install-d1.iso
           => `slackware-13.1-install-d1.iso'
Risoluzione di ftp.slackware.at... 81.223.20.35
Connessione a ftp.slackware.at|81.223.20.35|:21... connesso.
Accesso come utente anonymous ... Login eseguito!
==> SYST ... fatto.   ==> PWD ... fatto.
==> TYPE I ... fatto.  ==> CWD /slackware-13.1-iso ... fatto.
==> SIZE slackware-13.1-install-d1.iso ... 619192320
==> PASV ... fatto.   ==> RETR slackware-13.1-install-d1.iso ... fatto.
Lunghezza: 619192320 (591M)

 0% [                                       ] 110.560     5,00K/s   in 22s

2010-12-10 19:19:33 (5,00 KB/s) - Connessione dati: Connection reset by peer; Connessione di controllo chiusa.
Altro tentativo in corso.

--2010-12-10 19:19:34--  ftp://ftp.slackware.at/slackware-13.1-iso/slackware-13.1-install-d1.iso
  (tentativo: 2) => `slackware-13.1-install-d1.iso'
Connessione a ftp.slackware.at|81.223.20.35|:21... fallito: Connection reset bypeer.
Risoluzione di ftp.slackware.at... fallito: Host not found.
wget: impossibile risolvere l'indirizzo dell'host "ftp.slackware.at"
C:\software-win>


Praticamente, cosa ho fatto:
- ho avviato wget comedacomando soprariportato
- ho disconnesso manualmente la connessione remota ad internet
- wget se n'è accorto subito ritentando una seconda volta.
- ma, essendo ancora disconnesso, non è riuscito a risolvere l'indirizzo e questo l'ha indotto ad uscire

Avatar utente
conraid
Staff
Staff
Messaggi: 13114
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: wget "perpetuo"

Messaggioda conraid » ven dic 10, 2010 19:44

--timeout=seconds
Set the network timeout to seconds seconds. This is equivalent to specifying --dns-timeout,
--connect-timeout, and --read-timeout, all at the same time.

When interacting with the network, Wget can check for timeout and abort the operation if it takes too
long. This prevents anomalies like hanging reads and infinite connects. The only timeout enabled by
default is a 900-second read timeout. Setting a timeout to 0 disables it altogether. Unless you know
what you are doing, it is best not to change the default timeout settings.

All timeout-related options accept decimal values, as well as subsecond values. For example, 0.1
seconds is a legal (though unwise) choice of timeout. Subsecond timeouts are useful for checking
server response times or for testing network latency.

Avatar utente
lamarozzo
Linux 3.x
Linux 3.x
Messaggi: 732
Iscritto il: gio lug 14, 2005 0:00
Desktop: xfce
Distribuzione: archlinux
Località: Roma

Re: wget "perpetuo"

Messaggioda lamarozzo » sab dic 11, 2010 13:25

Non vorrei dire una stupidata ma non c'è anche il problema del timeout lato server? La porta sul server non dovrebbe chiudersi se la connessione è giù per troppo tempo? In questo caso non ci sarebbe molto da fare se non riaprire un'altra connessione.

Avatar utente
conraid
Staff
Staff
Messaggi: 13114
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: wget "perpetuo"

Messaggioda conraid » sab dic 11, 2010 14:37

lamarozzo ha scritto:Non vorrei dire una stupidata ma non c'è anche il problema del timeout lato server? La porta sul server non dovrebbe chiudersi se la connessione è giù per troppo tempo? In questo caso non ci sarebbe molto da fare se non riaprire un'altra connessione.


il difetto di wget è proprio quello che non stabilisce una connessione con il server, ma per ogni file da controllare/scaricare ne apre una. Questo "difetto" può essere sfruttato come pregio, proprio per quel che chiede joe, anche se continuo a vederla come ultima scelta

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: wget "perpetuo"

Messaggioda joe » dom dic 12, 2010 14:32

Farò una prova con la sola opzione --timeout.

Ma un'osservazione più generale:
- Il ramo slackware viene rilasciato attraverso parecchi mirror http.
- come scaricarlo in locale? quale applicazione utilizzare, visto che a quanto dite wget non è lo strumento più indicato?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6503
Iscritto il: gio nov 03, 2005 14:05
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: wget "perpetuo"

Messaggioda targzeta » dom dic 12, 2010 14:51

Come ti è già stato suggerito, usa rsync per sincronizzare una directory locale con una remota. Ora non mi ricordo un server rsync, ma anche se cerchi qui su Slacky lo trovi. Visto che ci sono i server, tanto vale utilizzarli.

Emanuele

:edit: guarda qui:
viewtopic.php?f=2&t=32175&p=280667#p280667
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà 

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6503
Iscritto il: gio nov 03, 2005 14:05
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: wget "perpetuo"

Messaggioda targzeta » dom dic 12, 2010 16:12

Pippi.S. Ora che sono sul mio PC ti posto anche quello che uso io:

Codice: Seleziona tutto

$> cat rsync.sh
rsync -hPi -a  --delete --delete-excluded --filter='merge rsync-filter' rsync://rsync.slackware.org.uk/slackware/slackware64-current/ .
in pratica sincronizzo la riderctory attuale "." con quella remota. Però guarda anche il file di filtraggio:

Codice: Seleziona tutto

$> cat rsync-filter
P rsync.sh
P rsync-filter
+ /slackware64/
+ /extra/
- /*/
- k*/
- source/
+ */
+ aspell-it-*.t?z
- aspell-word-lists/*
+ *.t?z
+ MANIFEST.bz2
+ FILE_LIST
- *
in pratica lascio fuori un bel po' di cose. Mi prendo solo tutti i 'txz' dalle directory 'slackware64/' e 'extra/', poi prendo i file 'MANIFEST.bz2' e 'FILE_LIST' e, solo 'aspell-it'. Nient'altro, nota anche la mancanza delle directory 'k*', ovvero kde e i sorgenti del kernel 'k/'. Non usando kde e compilandomi i kernel a manina, quei file non mi interessano. Con questo script e con questo filtro per rsync, mi scarico e tengo aggiornati "solo", circa 920MB di roba.

Nota anche che io seguo la Slackware64, quindi se vuoi seguire la Slackware, tutta questa cosa va adattata.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà 

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 2905
Iscritto il: ven apr 27, 2007 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: wget "perpetuo"

Messaggioda joe » mar dic 14, 2010 12:19

Ciao, e grazie per aver pubblicato il tuo script.
Come ho già detto sto lavorando da windows, per testare se il sistema è in ordine e quale software devo installare (il fine ècapire più o meno quanto spazio devo dedicare alla sua partizione... ma questa è un'altra storia).

Ho googolato un po' per cpaire se sia possibile usare rsync (l'originale) sotto windows. Ho visto diversi progetti che ne includerebbero però un'interfaccia, non ho approfondito troppo, per esempio cwrsync e altri.
Poi ho letto qualche guida sulla possibilità di scaricare pachetti dal repository cygwin al fine di creare un pacchetto essenziale per usare rsync e ssh... adesso non ricordo il link, ma è tra i primi risultati di google.

Allora mi sono detto, potrei crearmi un "pacchetto" con il solo rsync.
Non ho ancora testato nulla, ma alla fine l'eseguibile gira senza errori di dipendenze mancanti.
Come fare:

0- Praticamente occorre fare una directory comprensiva di tutti i files eseguibili e librerie necessare per farli funzionare.
Prendiamo i files necessari dal repository di cygwin, io ho usato tutte le versioni più recenti dei vari files, da uno dei tanti mirrors.
Per trovare i vari files è comodissimo questo motore di ricerca:
http://cygwin.com/packages/
oppure anche la chiave di rcerca

Codice: Seleziona tutto

site:cygwin.com -ml

accompagnata dal nomedel file che ci manca.

1- Iniziamo con rsync, immettendo "rsync" nel motore di ricerca oteniamo:
http://cygwin.com/cgi-bin2/package-grep.cgi?grep=rsync
Che present un bel po' di roba tra cui il pacchetto rsync-versionepiùrecente.
Diamo un'occhiata a cosa contiene il pacchetto: provenendo da slackware tutto sembra piuttosto semplice da capire.
http://cygwin.com/cgi-bin2/package-cat. ... grep=rsync

In pratica saremo tutti d'accordo che ci basta:

Codice: Seleziona tutto

Fri Feb 19 19:20:57 2010         356878 usr/bin/rsync.exe


Ok, scarichiamolo allora dal mirror scelto, per esempio:
http://ftp.univie.ac.at/packages/cygwin/release/rsync/

Se date un'occhiata al link, noterete che vi è in quella directory un file chiamato:
http://ftp.univie.ac.at/packages/cygwin ... setup.hint
Contiene ovviamente info sull'installazione di rsync, particolarmente utile è la riga:

Codice: Seleziona tutto

requires: libgcc1 libiconv2 libpopt0

Il che ci dice che per far girare rsync.exe che stiamo scaricando, occorreranno anche le librerie di dipendenza sopracitate.

2- scaricato rsync.exe, possiamo provare a lanciarlo e vederecosa manca.
ci viene detto che manca un file fondamentale cygwin1.dll. E' l alibreria fondamentale per far parlare i programmi di cygwin col sistema windows. Lo cerchiamo sempre col motore di ricerca sopra e lo scarichiamo dal mirror nella stessa directory in cui abbiamo rsync.exe.

3- riproviamo a lanciare l'eseguibile rsync.exe dal prompt del dos o con doppio click, penso sia la stessa cosa. Non funge perchè sta volta mancherà il file cygiconv-2.dll. Ne avevamo già il sospetto osservando il file "setup.hint" di rsync.
Quindi cechiamo e scarichiamo quel file nella nostra dir di lavoro. E facciamo lo stesso per gli altri assenti che nell'esempio di rsync saranno:
- cyggcc_s-1.dll
- cygpopt-0.dll

Ah... non ho detto che i files sono in pacchetto tar.bz2, quindi scarichiamo i pacchetti compressi ed estraiamo poi i files che ci servono, io ho usato 7zip in windows.

Ok. Insomma alla fine avremo la nostra directory che io ho chiamato rsync-files come segue

Codice: Seleziona tutto


G:\software-newwin\utilities\rsync\rsync-files>dir
 Il volume nell'unità G non ha etichetta.
 Numero di serie del volume: 7C80-7757

 Directory di G:\software-newwin\utilities\rsync\rsync-files

14/12/2010  11.15    <DIR>          .
14/12/2010  11.15    <DIR>          ..
13/08/2010  03.44            83.470 cyggcc_s-1.dll
23/12/2009  14.33         1.005.582 cygiconv-2.dll
09/06/2002  06.50            22.528 cygpopt-0.dll
31/08/2010  09.00         2.648.181 cygwin1.dll
19/02/2010  20.20           356.878 rsync.exe
               5 File      4.116.639 byte
               2 Directory  165.013.258.240 byte disponibili


Voglio far notare il volume della directory... 4 MB di roba. Sì per ottenerla ne avremo scaricato qualcosina in più ma non di molto. Questo rispetto all'installazione di un ambiente cygwin completo...
Con slackware per installare il software non si fa in modo troppo diverso.
Il risultato è ilseguente:

Codice: Seleziona tutto

G:\software-newwin\utilities\rsync\rsync-files>rsync.exe --version
rsync  version 3.0.7  protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.


Quindi alla fine sembra funzionare o almeno non dà errori relativi alla mancanza di qualcosa.
Va ovviamente testato meglio direi. Però se non altro l'idea potrebbe essere interessante, e non solo per rsync, ma più in generale per il porting di applicazioni unix sotto windows, senza mettere in piedi il completo cygwin.

Va notato che l'eseguibile .exe deve andare a pescare le librerie necessarie .dll nella directory di lavoro e non nel sistema, dove potrebbero esserci (specie se si ha un ambiente cygwin già installato) omonime librerie ma di versioni diverse magari non compatibili con la versione dell'eseguibile scaricato.

La gestione sul sistema windows:purtroppo non so costruire pacchetti per windows da integrare poi con il tool installazione applicazioni. Pertanto direi che questa versione "portabile" di rsync può essere installata dove si vuole c:\programmi\rsync-versione per esempio oppure anche lasciata dove si vuole.... insomma non è così indispensabile. Io non ho idea di come fare un installer per questo "pacchetto" ma se non è difficile e aveste voglia di spiegarlo sicuramente non guasterebbe.

Farò sapere come funziona:
a questo proposito, con wget ho ormai terminato di scaricare il ramo stabile di slackware-13.1 escludendo come già detto le directories:

testing
source
extra/source
pastures/source
pathces/source

Scompiazzando dallo scirpt di ansa89 presente nel wiki e volendo verificare praticamente che ci sia tutto e che sia tutto aggoirnato con un server rsync come posso fare per sincronizzare esattamente il mio ramo loacale /path/slackware-13.1/ con quello remoto, in modo che
1- tutti i files remoti più recenti di quelli locali, sovrascrivano quelli locali
2- tutti i files locali uguali a quelli remoti non vengano riscaricati
3- files locali in più tipo ".list" scaricati da wget vengano cancellati in quanto non presenti sul repo remoto (server rsync)


Andrebbe bene il comando seguente?

Codice: Seleziona tutto

rsync -avzh --progress --delete --delete-after \
      --exclude="source" \
      --exclude="extra/source" \
      --exclude="pasture/source" \
      --exclude="testing" \
      --exclude="patches/source" \
      $RSYNC_URL/slackware-13.1/ $LOCAL_PATH/slackware-13.1/


E' davvero tutto, scusate la lunghezza del post, spero nella vostra pazienza. :)