tratando a página da web como diretório

2

Sou usuário de Mac e quero cd em uma página da Web e, em seguida, cp alguns arquivos em um diretório local. Existe uma maneira de fazer isso?

Esta é a página a que me refiro: link

    
por man on laptop 03.01.2016 / 19:34

2 respostas

1

Como DisplayName mencionado em sua resposta, você não pode cd em um site. O comando cd funciona apenas nos diretórios da sua máquina local, se não for usado com outro comando para acessar remotamente uma máquina como ssh . Você precisa de um comando como wget ou curl para baixar algo da web. Além dos exemplos de curl , você pode usar wget assim:

baixar um determinado arquivo
wget http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/dtrain123.dat
baixar arquivos com uma certa extensão de arquivo desse diretório
wget -rl1 -A .dat http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/
< strong> baixar todos os arquivos desse diretório
wget -r -np -l1 http://www0.cs.ucl.ac.uk/staff/M.Herbster/GI07/week5/

explanation of command options:
-r recursive download (careful with that!)
-A comma seperated list of allowed file extensions
-l maxdepth of recursion while 'inf' or '0' means infinite.
-np omits parent directories
url's used refer to the url you mentioned

    
por 03.01.2016 / 21:47
2

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.

    
por 04.01.2016 / 01:10