[MEGOLDVA] wget pattern (nem megy)

Fórumok

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ó.

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 shelled helyettesiti az aktualis konyvtaradban levo file-ok alapjan azt hogy *minta*, probald igy:


wget -A '*minta*' -r URL

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 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.

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 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 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.

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)

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.