Estou tentando baixar um arquivo através de HTTP de um site usando wget
.
Quando eu uso:
wget http://abc/geo/download/?acc=GSE48191&format=file
Eu recebo apenas um arquivo chamado index.html?acc=GSE48191
.
Quando eu uso:
wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm
Recebo asd.rpm
, mas quero fazer o download com o nome real e não quero alterar manualmente o nome do arquivo baixado.
--trust-server-names
argumento dewget
:Respostas:
O arquivo que você está baixando é um
tar
archive (um arquivo binário), fornecido por um link dinâmico de um servidor da web.wget
normalmente salvaria o arquivo usando parte da URL que você está usando, mas, nesse caso, é apenas um ponto de extremidade da API REST (ou algo semelhante); portanto, o nome seria hostil de se trabalhar (ainda seria um nome válido e o o conteúdo do arquivo seria o mesmo).No entanto, nesse caso, o servidor fornece um cabeçalho "Disposição de conteúdo" contendo o nome do arquivo real, que
wget
poderá ser usado se você usar a--content-disposition
opção Esta opção está marcada como "experimental" no meu manual parawget
.Você também precisa citar o URL para que o shell não interprete os caracteres
&
e?
nele.O equivalente usando
curl
:Ou, usando as opções longas equivalentes:
Depois de baixar o arquivo, você precisa descompactá-lo:
Devido à maneira como esse arquivo específico foi criado, isso descompactará os arquivos do diretório no diretório atual (portanto, criar um novo diretório, mover o arquivo para lá e descompactá-lo pode ser uma boa idéia). Os arquivos neste arquivo
gzip
morto sãoCEL
arquivos compactados .fonte
O shell faz a interpretação usual dos caracteres, especialmente
?
como curinga (que não importa aqui) e&
como "colocado em segundo plano". Você deve ter notado o último, porque a resposta do shell é diferente de um comando direto.Então você precisa citar:
fonte