shell – ¿Cómo descargar un archivo y extraerlo sin guardarlo en el disco?

Pregunta:

Me gustaría descargar y extraer un archivo en un directorio determinado. Así es como lo he estado haciendo hasta ahora:

wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz
tar zxf dbt2-0.37.50.3.tar.gz
mv dbt2-0.37.50.3 dbt2

En su lugar, me gustaría descargar y extraer el archivo sobre la marcha , sin tener el tar.gz escrito en el disco. Creo que esto es posible canalizando la salida de wget a tar y dándole a tar un objetivo, pero en la práctica no sé cómo unir las piezas.

Respuesta:

Puede hacerlo diciéndole a wget que wget su carga útil a stdout (con el indicador -O- ) y suprima su propia salida (con el indicador -q ):

wget -qO- your_link_here | tar xvz -

Para especificar un directorio de destino:

wget -qO- your_link_here | tar xvz - -C /target/directory

Actualizar

Si tiene GNU tar

wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz

debería permitirle hacerlo todo en un solo paso.

-q tranquilo

-O - salida a stdout

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım