[SOLVED] Wget con file multipli
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.
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.
- Linpassion
- Linux 2.x
- Messaggi: 336
- Iscritto il: mar 30 ott 2012, 11:17
- Slackware: 14.2
- Desktop: xfce, fluxbox
[SOLVED] Wget con file multipli
Avrei una domanda: è possibile utilizzare wget per scaricare un gruppo di file da un url, come ad esempio tutti i file *txz da http://slackware.uk/csb/14.2/x86/ ?
Grazie
Grazie
Ultima modifica di Linpassion il sab 7 apr 2018, 9:58, modificato 2 volte in totale.
-
- Packager
- Messaggi: 1339
- Iscritto il: sab 27 mar 2004, 0:00
- Slackware: current
- Desktop: fluxbox.git
- Località: Collegno, but made in Friûl
- Contatta:
Re: Wget con file multipli
Non ho mai provato, ma questo potrebbe funzionare:Linpassion ha scritto:Avrei una domanda: è possibile utilizzare wget per scaricare un gruppo di file da un url, come ad esempio tutti i file *txz da http://slackware.uk/csb/14.2/x86/ ?
Codice: Seleziona tutto
wget -r --accept "*.txz" --level 2 "http://slackware.uk/csb/14.2/x86/"
- Linpassion
- Linux 2.x
- Messaggi: 336
- Iscritto il: mar 30 ott 2012, 11:17
- Slackware: 14.2
- Desktop: xfce, fluxbox
Re: Wget con file multipli
Funziona ottimamente
- joe
- Iper Master
- Messaggi: 3797
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: [SOLVED] Wget con file multipli
Però ti scarica anche il pattern delle directories superiori che probabilmente non ti servono.
L'ho interrotto al volo... con ctrl+c...
Avevo buttato giù una cosa del genere anni fà. Nel mio caso scarica la sotto-directory e tutto il contenuto tranne gli index.html*:
I commenti spiegano cosa fa lo script. Sicuramente c'è un modo più semplice...
Testalo perchè non ricordo se funzionava, mi pare di sì ma è tanto che non lo uso.
Puoi adattarlo al tuo caso sostituendo "reject=..." con --accept "*.txz" come ha suggerito "albatrosla":
Venendo all'esempio tu lanceresti:
E otterresti una cosa di sto tipo:
Codice: Seleziona tutto
$ tree
.
└── slackware.uk
├── csb
│ └── 14.2
│ └── x86
│ ├── BeautifulSoup-4.6.0-i586-1_csb.txz
│ ├── accountsservice-0.6.45-i586-1_csb.txz
│ ├── alacarte-3.11.91-i586-1_csb.txz
│ ├── autoconf-archive-2017.03.21-i586-1_csb.txz
│ ├── caribou-0.4.21-i586-1_csb.txz
│ └── cinnamon-3.4.6-i586-1_csb.txz
└── robots.txt.tmp
4 directories, 7 files
Avevo buttato giù una cosa del genere anni fà. Nel mio caso scarica la sotto-directory e tutto il contenuto tranne gli index.html*:
Codice: Seleziona tutto
cat scripts/webdir-get
#!/bin/sh
# =========================
# caso 1.
# http://dominio/a/b/c/
#
# caso 2.
# dominio/a/b/c/
#
# 0- lo script scarica nella dir corrente la dir "c" e i dati e le sottodir in essa contenute.
#
# otterremo nel dir corrente: c/dati
#
# . Bisogna sapere quante dir superiori bisogna eliminare:
#
# 1- eliminiamo se presente l'"http://" iniziale e l'eventuale slah finale.
# otteniamo:
#
# dominio/a/b/c
#
# 2- a questo punto contiamo gli slash: N (nell'esempio avremo "3").
# 3- escludo N-1 directory (più il dominio). Nel mio caso avrò 3-1=2 dir da eliminare
# infatti da "dominio/a/b/c" verrà eliminato "dominio/a/b" e otterrò nella dir
# corrente "c" come voluto.
# =================================
#
# - valuto se c'è http:// all'inizio e alla fine
# - se c'è lo tolgo
URL="$(echo "$1" |sed 's/^http\:\/\///'|sed 's/\/$//')"
echo URL: $URL
# quanti slash ci sono?
SLASHES=$(grep -o \/ <<< "$URL" | wc -l)
echo Slashes: $SLASHES
DIRSTOCUT=$(($SLASHES-1))
echo DIRSTOCUT: $DIRSTOCUT
wget -e robots=off -r -nH --cut-dirs="$DIRSTOCUT" --no-parent --reject="index.html*" "$URL/"
Testalo perchè non ricordo se funzionava, mi pare di sì ma è tanto che non lo uso.
Puoi adattarlo al tuo caso sostituendo "reject=..." con --accept "*.txz" come ha suggerito "albatrosla":
Codice: Seleziona tutto
wget -e robots=off -r -nH --cut-dirs="$DIRSTOCUT" --no-parent --accept="*.txz" "$URL/"
Codice: Seleziona tutto
webdir-get "http://slackware.uk/csb/14.2/x86/"
Codice: Seleziona tutto
$ tree
.
└── x86
├── BeautifulSoup-4.6.0-i586-1_csb.txz
├── accountsservice-0.6.45-i586-1_csb.txz
├── alacarte-3.11.91-i586-1_csb.txz
├── autoconf-archive-2017.03.21-i586-1_csb.txz
├── caribou-0.4.21-i586-1_csb.txz
├── cinnamon-3.4.6-i586-1_csb.txz
└── cinnamon-control-center-3.4.0-i586-1_csb.txz
- joe
- Iper Master
- Messaggi: 3797
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: [SOLVED] Wget con file multipli
Quello che invece volevo fare io si poteva più facilmente ottenere con "lftp" prendendo spunto da questa pagina di Alien Bob:
http://www.slackware.com/~alien/slackbuilds/
In questo modo scarichi tutta la sottodir "build" coi files che contiene. Nel tuo caso non va bene però perchè vuoi solo i txz, questo invece prende tutto.
lftp ha l'opzione "--exclude", ma a te servirebbe una "--include-only=REGEX".
Ne parlano qui:
https://stackoverflow.com/questions/209 ... -file-path
Ma alla fine sembra venire fuori qualcosa di un po' troppo complicato. Quasi come il mio script!
Altrimenti se volessi prendere solo i txz e ritrovarteli nella directory corrente, potresti usare il comando di albatrosla in uno script che dopo il download
sposta i txz nella dir corrente e cancella l'albero delle subdir vuote...
qualcosa tipo:
Bisognerebbe però impedire che disgraziatamente il "rm" non rimuova qualcosa di già esistente e omonimo nella di corrente, caso difficile ma non impossibile...
Insomma prendi tutto come spunti da verificare.
Ciao
http://www.slackware.com/~alien/slackbuilds/
Codice: Seleziona tutto
lftp -c "open http://www.slackware.com/~alien/slackbuilds/<program>/; mirror build"
lftp ha l'opzione "--exclude", ma a te servirebbe una "--include-only=REGEX".
Ne parlano qui:
https://stackoverflow.com/questions/209 ... -file-path
Ma alla fine sembra venire fuori qualcosa di un po' troppo complicato. Quasi come il mio script!
Altrimenti se volessi prendere solo i txz e ritrovarteli nella directory corrente, potresti usare il comando di albatrosla in uno script che dopo il download
sposta i txz nella dir corrente e cancella l'albero delle subdir vuote...
qualcosa tipo:
Codice: Seleziona tutto
url=$1
tree=$(echo $url|sed 's/^....\:\/\///')
subdir=$(echo $tree|sed 's/\/.*$//')
wget -r --accept "*.txz" --level 2 "*$url"
mv $tree/*txz .
rm -r $subdir
Insomma prendi tutto come spunti da verificare.
Ciao
-
- Packager
- Messaggi: 1339
- Iscritto il: sab 27 mar 2004, 0:00
- Slackware: current
- Desktop: fluxbox.git
- Località: Collegno, but made in Friûl
- Contatta:
Re: [SOLVED] Wget con file multipli
Per soluzioni arzigogolate, io usavo links -dump per salvarmi la pagina html, poi facevo un parsing di quest'ultima per prendermi ciò che mi interessava e infine davo la lista di url in pasto ad un ciclo con wget.
In pratica facevo in batch ciò che avrei fatto manualmente via browser...
In pratica facevo in batch ciò che avrei fatto manualmente via browser...