Estoy tratando de descargar un archivo a través de HTTP desde un sitio web usando wget
.
Cuando uso:
wget http://abc/geo/download/?acc=GSE48191&format=file
Solo recibo un archivo llamado index.html?acc=GSE48191
.
Cuando uso:
wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm
Obtengo asd.rpm
, pero quiero descargar con el nombre real, y no quiero cambiar manualmente el nombre del archivo descargado.
--trust-server-names
argumento parawget
-Respuestas:
El archivo que está descargando es un
tar
archivo (un archivo binario), proporcionado por un enlace dinámico desde un servidor web.wget
normalmente guardaría el archivo usando parte de la URL que está usando, pero en este caso es solo un punto final de la API REST (o algo similar), por lo que el nombre sería poco amigable para trabajar (aún sería un nombre válido y el el contenido del archivo sería el mismo).Sin embargo, en este caso, el servidor proporciona un encabezado de "Disposición de contenido" que contiene el nombre real del archivo, que
wget
puede usar si usa la--content-disposition
opción. Esta opción está marcada como "experimental" en mi manual parawget
.También debe citar la URL para que el shell no interprete los caracteres
&
y?
.Lo equivalente usando
curl
:O, usando las opciones largas equivalentes:
Una vez que haya descargado el archivo, debe descomprimirlo:
Debido a la forma en que se creó este archivo en particular, esto descomprimirá los archivos del archivo en el directorio actual (por lo que puede ser una buena idea crear un nuevo directorio, mover el archivo allí y desempaquetarlo). Los archivos de este archivo son
gzip
comprimido conCEL
archivos.fuente
El shell realiza la interpretación habitual de los caracteres, especialmente
?
como comodín (que no importa aquí) y&
como "poner en segundo plano". Deberías haber notado esto último, porque la respuesta del shell es diferente de un comando directo.Entonces necesita citar:
fuente