Fazendo Download e Extraindo um .tar para um Diretório Específico


2

Quero baixar um alcatrão de um repositório git e extrair seu conteúdo para outra pasta.

A seguinte linha (dividida para maior clareza) funciona:

curl -L -0 nt-dotfiles.tar.gz https://api.github.com/repos/nicktomlin/laptop/tarball \
 | tar --strip-components=1 -zx -C ~/Documents/dotfiles

mas dá dá esse erro:

curl: (6) Could not resolve host: nt-dotfiles.tar.gz; nodename nor servname provided, or not known

Estou bem em deixar as coisas como estão (porque ainda funcionam), mas estou curioso sobre o erro e me sentiria melhor se ele desaparecesse.

Obrigado!


1
Não sei ao certo qual é a pergunta, a mensagem está dizendo que ele espera um host (como um URL da web), mas obtém um arquivo (que não pode ser resolvido para um IP).
— Dave

sua sintaxe está errada. dê uma olhada no manual: curl.haxx.se/docs/manpage.html
— Lorenzo Von Matterhorn

Respostas:


8

Sua sintaxe deve ser: curl -L -o nt-dotfiles.tar.gz https://api. ... Você está usando um zero em vez de minúsculas 'Oh'. Forças zero se enrolam para usar http1.0. 'o' fornece um nome de arquivo de saída.

Na página do manual:

-0, --http1.0
          (HTTP)  Forces curl to issue its requests using HTTP 1.0 instead
          of using its internally preferred: HTTP 1.1. 


-o, --output <file>
          Write output to <file> instead of stdout. If you are using {} or
          [] to fetch multiple documents, you can use '#'  followed  by  a
          number  in  the <file> specifier. That variable will be replaced
          with the current string for the URL being fetched. Like in:

            curl http://{one,two}.site.com -o "file_#1.txt"

Também, a sintaxe URL é dependente de protocolo, consulte esta RFC de esclarecimento: ietf.org/rfc/rfc3986.txt
— Lorenzo Von Matterhorn

+1 para sua edição totalmente clara, explicando os argumentos.
— Lorenzo Von Matterhorn

para não comentar, mas depois de aceitar isso, notei que o uso -onão extrai o arquivo. Se eu usar -0(o que sei estar errado), o arquivo será extraído para a pasta com a qual eu especifico tar -C. Eu recebo o could not resolve host:erro, mas funciona. Alguma ideia?
— quer

@NickTomlin OK, tente não usar a -oopção. Eu o sugeri originalmente porque pensei que era isso que você estava tentando fazer com o -0. Eu acho que não ter a -o filenameopção permitirá canalizar o curlarquivo ed para o comando tar. Como eu disse na resposta, a -0opção definitivamente não é o que você deseja, então talvez a resposta original devesse ser apenas removê-la. PS: Eu diria um comentário snipe é justificável em circunstâncias :-)
— mcalex

8

Você pode tentar:

$ curl -s http://example.com/file.tgz | tar xvf - -C dest/
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.