Jest dobry powód, dla którego nie może to działać bezpośrednio z HTTP, i dlatego, że URL nie jest ścieżką do pliku, chociaż użycie /
jako separatora może sprawić, że będzie wyglądać jak jeden, i czasami się zgadzają. 1
Tradycyjnie (lub historycznie) serwery sieciowe często wykonują lustrzane hierarchie katalogów (dla niektórych - np. Apache - jest to rodzaj integralności), a nawet zapewniają indeksy katalogów podobne do systemu plików. Nic jednak nie wymaga tego w protokole HTTP.
Jest to istotne, ponieważ jeśli chcesz zastosować glob na powiedzmy, wszystko co jest podścieżkę z http://foo/bar/
, chyba że serwer zapewnia pewien mechanizm, aby zapewnić Państwu taki (np wspomnianego indeksu), nie ma nic, aby zastosować go do glob do . Nie ma tam systemu plików do przeszukiwania. Na przykład tylko dlatego, że wiesz, że istnieją strony http://foo/bar/one.html
i http://foo/bar/two.html
nie oznacza to, że możesz uzyskać listę plików i podkatalogów za pośrednictwem http://foo/bar/
. Byłoby całkowicie w ramach protokołu, aby serwer zwrócił za to 404. Lub może zwrócić listę plików. Lub może wysłać ci ładne zdjęcie jpg. Itp.
Więc nie ma tutaj standardu, który wget
mógłby wykorzystać. AFAICT, wget działa w celu odzwierciedlenia hierarchii ścieżek poprzez aktywne sprawdzanie linków na każdej stronie . Innymi słowy, jeśli rekurencyjnie dublujesz, http://foo/bar/index.html
pobiera, index.html
a następnie wyodrębnia linki, które są jego podścieżką. 2-A
przełącznik jest jedynie filtrem, który jest stosowany w tym procesie.
Krótko mówiąc, jeśli wiesz, że te pliki są gdzieś indeksowane, możesz zacząć od tego za pomocą -A
. Jeśli nie, to nie masz szczęścia.
1. Oczywiście adres URL FTP również jest adresem URL. Jednak chociaż nie wiem dużo o protokole FTP, sądzę, że w oparciu o jego naturę może on mieć formę, która pozwala na transparentne globowanie.
2. Oznacza to, że może istnieć prawidłowy adres URL http://foo/bar/alt/whatever/stuff/
, który nie zostanie dołączony, ponieważ nie jest w żaden sposób powiązany z niczym w zbiorze rzeczy, z którymi jest powiązany http://foo/bar/index.html
. W przeciwieństwie do systemów plików, serwery sieciowe nie są zobowiązane do zapewnienia przejrzystości układu treści, ani nie muszą tego robić w sposób intuicyjny.
curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"