web-dev-qa-db-fra.com

Télécharger l'extrait de fichier dans un répertoire spécifique avec cURL

Je souhaite que le fichier soit téléchargé sur ~/downloads et conserve le même nom de fichier. Ensuite, je veux que ce fichier soit extrait (contenu) dans le répertoire ~/downloads/ok. Le répertoire ~/downloads/ok existe.

curl -Lo ~/downloads https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz | tar zxf -C ~/downloads/ok

J'ai l'erreur: tar (child): -C: Cannot open: No such file or directory

1
Karl Morrison

Si vous enregistrez le fichier dans un répertoire curl, la canalisation vers tar est inutile: aucune donnée n'est transférée sur le canal. Et l'option f dans tar est destinée à la lecture d'un fichier (le nom du fichier doit être l'argument suivant), ce qui n'est pas non plus utile dans un tube. Pour enregistrer dans un fichier et l’envoyer dans un canal, utilisez tee:

curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz |
  tee ~/downloads/0.1.1.tar.gz |
  tar zx -C ~/downloads/ok
3
muru
curl -SL https://download.example.org/abc.tar.gz | tar -zxC /opt

produira le dossier /opt/abc.

Le -x pour l'extrait, -z pour .gz et -C pour le répertoire de destination,

0
mloskot

Vous devez rediriger le fichier lui-même vers le répertoire de destination:

curl -LOk https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz > ~/downloads/0.1.1.tar.gz

Et continuez avec l'extraction d'archive.

0
yPhil

vous voudrez peut-être

(cd ~/downloads && curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz && cd ok && tar zxf ../0.1.1.tar.gz)

ou plus lisiblement

(
    f='https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz'
    cd ~/downloads && 
    curl -L $f && 
    cd ok && 
    tar zxf ../${f##*/}
)

J'utilise des parenthèses pour exécuter les commandes dans un sous-shell afin que votre répertoire actuel dans votre shell actuel ne soit pas modifié

0
glenn jackman