Em geral, não é possível navegar em um site como um diretório, porque não há uma maneira padrão de listar os arquivos dentro de um diretório. Na verdade, não existe sequer um conceito de diretório na Web: se http://foo/bar/wibble
serve um arquivo chamado wibble
em um diretório chamado bar
é uma questão de como o servidor é projetado, não é necessário seja desse jeito. Também é possível ter um conteúdo diferente, dependendo do número de barras (por exemplo, http://foo/bar/wibble
e http://foo/bar/wibble/
e http://foo/bar//wibble
retornam conteúdo diferente), que não podem ser representadas como caminhos de árvore de arquivos.
Observe que, diferentemente do que os outros reivindicaram aqui, é possível navegar em arquivos remotos como se fossem locais. Por exemplo, você pode cd
em um site FTP se você montá-lo; maneiras de fazer isso incluem Macfusion no Mac OS X, gvfs-mount no Linux com o Gnome, curlftpfs no Linux ou OS X, e AVFS . Tudo isso funciona através do FUSE , que é uma estrutura para expor basicamente qualquer coisa como uma árvore de diretórios.
Não existe uma maneira geral de expor um servidor da Web como uma árvore de diretórios, porque ele realmente não tem essa estrutura de árvore. Além disso, solicitações para a mesma URL podem retornar conteúdo diferente (com base nas preferências de idioma do cliente, agente do usuário, cookies, etc.).
O servidor que você deseja veiculou uma página que parece uma listagem de diretório quando você acessa determinados URLs. Mas essa página é formatada no servidor, não é algo que seu navegador formata quando acessa um site FTP. Em princípio, seria possível para o cliente analisar isso e gerar uma listagem de diretórios; por exemplo, há um link que faz isso, mas só oferece suporte à saída de uma maneira específica de formatar a listagem de diretórios no servidor local. Na verdade, existe um protocolo padrão para acessar as árvores de diretórios pelo HTTP - WebDAV -, mas ele não é usado com muita frequência. Não tenho conhecimento de uma implementação que analise a listagem de diretórios padrão do Apache, que eu acho que é o que seu site serve.
Se você quiser baixar um arquivo na linha de comando, você pode usar curl
. Se você quiser baixar todos os arquivos em um diretório, você pode usar o wget (não incluído no OSX, mas pode ser instalado através de gerenciadores de pacotes):
wget -r -np -l1 http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/
wget -r -np http://…
é análogo a cp -r http://… .
, mas a recursão funciona de maneira diferente. cp
copia diretórios enumerando os arquivos neles, incluindo subdiretórios nos quais ele age recursivamente e copia arquivos regulares criando um arquivo com o mesmo conteúdo. Na web, não há distinção entre diretórios e arquivos regulares; wget
recurses seguindo todos os links em uma página HTML. A opção -r
diz a wget
para copiar recursivamente e -np
diz para não seguir os links que apontam para cima - o que é uma questão textual: segue apenas links cujo alvo começa com http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/
(com regras para links relativos que alcançam o mesmo resultado). A opção -l1
é uma segurança extra para informar que pare de recorrer após um nível (isto é, segue links do arquivo HTML no URL fornecido e, em seguida, pára); não é necessário, mas é recomendado evitar situações em que o download recursivo oferece muito mais material do que você pretendia originalmente devido a links extras que você não havia notado.