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!

Nick Tomlin
fonte
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"
mcalex
fonte
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/
kenorb
fonte