wget-el szeretnék lehúzni egy csomó fájlt, aminek a nevében szerepel egy adott minta (
*minta*
)
így próbálom:
wget -A *minta* -r URL
erre 1db, a mintára nem is illeszkedő fájl letöltése után megáll, ezt adja:
--2009-08-20 16:01:00-- URL
URL feloldása... xxx.xxx.xxx.xxx
Csatlakozás a következőhöz: URL[xxx.xxx.xxx.xxx]:xx... kapcsolódva.
HTTP kérés elküldve, várom a választ... 200 OK
Hossz: xxxx (x,xK) [text/html]
Mentés ide: „URL/index.html”
100%[============================================>] x.xxx --.-K/s idő 0s
2009-08-20 16:01:00 (xx,x MB/s) - „URL/index.html” mentve [xxxx/xxxx]
Eltávolítom URL/index.html-t, mivel vissza kellene utasítani.
BEFEJEZTEM --2009-08-20 16:01:00--
Letöltve: 1 fájl, x,xK 0s alatt (xx,x MB/s)
Ha kiszedem az -A kapcsolót, akkor működik, értelemszerűen lehúz mindent, azt is amit nem kellene. hol lehet a hiba?
szerk:
próbáltam még a következő kapcsolókat és bizonyos kombinációikat, de ugyanez az eredmény:
-c
-m
-L
-E
--restrict-file-names=unix
--restrict-file-names=windows
--restrict-file-names=nocontrol
============ B U G ! =============
vagy legalábbis úgy néz ki:
https://bugzilla.redhat.com/show_bug.cgi?id=286161
azt írják, hogy van rá valami patch, de nem tudom, hogy az csak RH specifikus-e, vagy sem. Mindenesetre nálam a Lenny a saját repojában lévő 1.11.4-2-vel még csinálja ezt.
talán mégsem bug
============MEGOLDÁS(?)==========
talán ez, de még nem próbáltam:
"wget letölti azokat a fájlokat, amiket megadsz neki implicite, aztán ha megmondod neki hogy rekurzió kell, megpróbálja azokat parsolni, kigyűjt belőlük linkeket, majd azok közül amiről úgy gondolja hogy le kell töltenie, pl minta miatt, azokkal kezdi elölről
(azt hiszem ezenkívül csak két lehetőség van, a "-p" és a letöltések sorrendje, tehát minden talált oldalnál a megadott fájlok letöltése vagy előbb a teljes fa/linklista összeállítása/letöltése, meg talán hogy szélességi vagy mélységi legyen a bejárás)
szerintem add meg neki hogy a html-eket (vagy ami kell, tehát ami link szerepel az indexben) azokat is töltse le"
==========WORKAROUND=============
ha a fájlok valamennyire rendezetten vannak elnevezve/elhelyezve, akkor egy egyszerű bash scripttel lehet hívogatni a wget-et a szabályszerűség szerint és nem kell rekurzió.
- 2026 megtekintés
Hozzászólások
wget -A "*minta*" -r URL
Idézőjel nélkül a *-okat már a shell kifejti, ha van *minta*-ra illeszkedő fájl.
- A hozzászóláshoz be kell jelentkezni
Ugyanazt kapom.
- A hozzászóláshoz be kell jelentkezni
A shelled helyettesiti az aktualis konyvtaradban levo file-ok alapjan azt hogy *minta*, probald igy:
wget -A '*minta*' -r URL
- A hozzászóláshoz be kell jelentkezni
Erre is ugyanazt kapom.
- A hozzászóláshoz be kell jelentkezni
> Ha kiszedem az -A kapcsolót, akkor működik, értelemszerűen lehúz mindent, azt is amit nem kellene. hol lehet a hiba?
Olvasnivaló: http://www.gnu.org/software/wget/manual/wget.html#Types-of-Files
- A hozzászóláshoz be kell jelentkezni
Megvolt.
Azt, hogy kiszedem a kapcsolót, azt nem azért írtam mert egyébként nem tudom hogyan működik, hanem azért, mert így látszik, hogy más hiba (pl. elgépelt URL) valószínűleg nincs.
- A hozzászóláshoz be kell jelentkezni
Próbáld pavuk-kal, ahogy nézem saját szűrőt írhatsz hozzá, javascript-ben: http://www.pavuk.org/javascript.html
- A hozzászóláshoz be kell jelentkezni
Köszönöm, de szerintem most maradnék a wgetnél, főleg, hogy úgy gondolom, hogy nem sok választ el a megoldástól (ld. lejebb).
- A hozzászóláshoz be kell jelentkezni
A man ez pelda szerepel:
wget -r -l1 --no-parent -A.gif http://www.server.com/dir/
Tehat vedd ki a csillagokat es ne legyen szokoz az A utan.
A man azt irja:
A "*.gif" would have worked too.
De akkor megsem...
- A hozzászóláshoz be kell jelentkezni
A csillagok kellenek, mivel nekem nem a végződésre kell szűrnöm, hanem egy darabra a fájlnévből. Szóközt próbáltam már, nincs hatása.
És igen, a man azt írja, hogy patternként is működnie kellene. De akkor miért nem működik?
szerk:
ráadásul nekem valamiért vegződésre sem működik.
Egyébként úgy gondolom, hogy alapvetően nem önmagában az accept mintával van a gond, hanem valahogy nem tudja rendesen végigcsinálni a rekurzív ciklust, pl. van egy köztes lépés, amire nem paszol a minta és ott abbahagyja, nem megy beljebb, vagy ilyesmi talán.
Ezt támasztja alá az is, hogy, ha azt a szintet adom meg URL-ként, ahol a fájlok vannak akkor működik.
- A hozzászóláshoz be kell jelentkezni
Van jogod listazni minden konyvtarszintet?
- A hozzászóláshoz be kell jelentkezni
Van.
- A hozzászóláshoz be kell jelentkezni
Ha azokat a fileokat nem töltöd le (kezdve a index.html-el), amelyek listázzák a file-okat amit le szeretnél tölteni, akkor mégis ezt hogy képzeled?
- A hozzászóláshoz be kell jelentkezni
Ezt nem egészen értem. Amúgy az index.html-t a jelenlegi felállásban letölti ha kell, ha nem.
- A hozzászóláshoz be kell jelentkezni
az indexhtmlben szerepel a minta?
(indexet azért tölti le mert azt közvetlen megadod, nem vonatkozik rá a szabály, viszont ha nem szerepel benne a minta akko miért folytatná)
- A hozzászóláshoz be kell jelentkezni
Nem szerepel, de ettől még szerintem folytatnia kellene, mert rekurzívan megy.
- A hozzászóláshoz be kell jelentkezni
a rekurzió nem azt jelenti hogy letöltijazintenetetcuzámmen, aztán csak azt menti el a lemezre amit szeretnél
wget letölti azokat a fájlokat, amiket megadsz neki implicite, aztán ha megmondod neki hogy rekurzió kell, megpróbálja azokat parsolni, kigyűjt belőlük linkeket, majd azok közül amiről úgy gondolja hogy le kell töltenie, pl minta miatt, azokkal kezdi elölről
(azt hiszem ezenkívül csak két lehetőség van, a "-p" és a letöltések sorrendje, tehát minden talált oldalnál a megadott fájlok letöltése vagy előbb a teljes fa/linklista összeállítása/letöltése, meg talán hogy szélességi vagy mélységi legyen a bejárás)
szerintem add meg neki hogy a html-eket (vagy ami kell, tehát ami link szerepel az indexben) azokat is töltse le
- A hozzászóláshoz be kell jelentkezni
"a rekurzió nem azt jelenti hogy letöltijazintenetetcuzámmen, aztán csak azt menti el a lemezre amit szeretnél"
jó, azért ezt gondoltam :)
de azért azt úgy érezném logikusnak, hogy a könyvtárakba külön kérés nélkül is bemenjen. Mindenestre, ki fogom próbálni amit írtál.
- A hozzászóláshoz be kell jelentkezni
Hogy menne be a könyvtárakba? HTTP-n nem lehet könyvtárat listázni, vagy egyáltalán megállapítani, hogy vmi könyvtár (amit a szerver kilistáz) vagy fájl.
- A hozzászóláshoz be kell jelentkezni
Úgy, ahogy az index.html-t is kérdés nélkül letölti. Azthittem, hogy ez valamennyire magától értetődő, hogy végigmegy a linkeken pl., vagy ilyesmi, de ezekszerint nem.
- A hozzászóláshoz be kell jelentkezni
kérdés, sőt kérés nélkül sem tölti le magától az index.html-t
valószínű arra gondolsz, hogy a szerver úgy van beállítva hogy az adott "értelmetlen" kérést átirányítsa egy index.html-re, vagy generáljon az adott könyvtár alapján egy ilyen választ
(van egy sanda gyanúm hogy nagyon nagyon messze vagy a témától, ekkor pedig ne szép dolog rögtön bugra kenni, ellenkező esetben (ami azért még az eddigiek alapján is lehet, legfeljebb félreértjük a gyenge fogalmazásod) persze elnézést ezért)
- A hozzászóláshoz be kell jelentkezni
Valóban messze vagyok, de nem hiszem, hogy annyira "nem szép"(?) ötlet lenne a bugra kenni, mivel pont ugyanezt a jelenséget írja le a bugreport. Ettől persze még okozhatja ugyanezt nálam más is, de a leírás passzol, az érintett verzió passzol...
Egyébként kár rugózni ezen, egy közönséges bash scripttel workaroundoltam a problémát, sőt, más okokból (letöltött fájlok feldolgozása) azt úgysem tudnám kikerülni.
- A hozzászóláshoz be kell jelentkezni
(((te azt írod -A kapcsoló nélkül működik, az említett bug pedig ennek az ellenkezőjét)))
- A hozzászóláshoz be kell jelentkezni
Valóban. Hát akkor benéztem.
- A hozzászóláshoz be kell jelentkezni
wget -r -l inf -A'minta_es_nem_regexp' http://www.example.org/downloads/
módon próbálnám, mivel az -A kapcsoló nem igazán érti a helyettesítőket, illetve csak megkötésekkel.
És basszus de: http://ftp.gnu.org/old-gnu/Manuals/wget-1.8.1/html_chapter/wget_4.html#… viszont ez a friss stable
----
概略情報
- A hozzászóláshoz be kell jelentkezni
Ez sem megy, de ahogy tegnap már írtam, valószínűleg egy bug az oka ennek az egésznek.
Amúgy nem nagy probléma, mert a könyvtárak elnevezésében van rendszer (számozottak), úgyhogy bash scriptel sikerült workaroundolni.
- A hozzászóláshoz be kell jelentkezni
Én ez alapján (főként a link alapján) nem vagyok meggyőzve a bugról, bár mindegy. Ha pedig ezt többször is kell csinálnod akkor mindenképpen érdemes lehet frissíteni a wget -et
----
概略情報
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni