.tarをダウンロードして特定のディレクトリに抽出する


2

gitリポジトリのtarをダウンロードし、その内容を別のフォルダーに抽出したい。

次の行(わかりやすくするために分割されています)は機能します。

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

しかし、このエラーが発生します:

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

私は物事をそのままにしておくことに問題はありませんが(まだ機能しているので)、エラーに興味があります。

ありがとう!


1
質問が何なのかわかりません。メッセージは、ホスト(Web URLなど)を期待しているが、代わりにファイル(IPに解決できない)を取得することを言っています。
デイブ

構文が間違っています。マニュアルをご覧ください
ロレンツォフォンマッターホルン

回答:


8

構文は次のとおりcurl -L -o nt-dotfiles.tar.gz https://api. ... です。小文字の「Oh」の代わりにゼロを使用しています。ゼロに設定すると、curlは強制的にhttp1.0を使用します。「o」は出力ファイル名を提供します。

manページから:

-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"

また、URL構文はプロトコルに依存します。明確にするためにこのRFCを参照してください:ietf.org/rfc/rfc3986.txt
ロレンツォフォンマッターホルン

引数を説明する完全に明確な編集のために+1。
ロレンツォフォンマッターホルン

スナイプをコメントするのではなく、これを受け入れた後、-o実際に使用してもアーカイブが抽出されないことに気付きました。-0(間違っているとわかっている)を使用すると、アーカイブはで指定したフォルダーに抽出されますtar -C。私は取得could not resolve host:エラーが、それが動作します。何か案は?
ニックトムリン

@NickTomlin OK、-oオプションをまったく使用しないでください。私はそれをあなたがしようとしていることだと思ったので、最初に提案しました-0。この-o filenameオプションがないと、curledファイルをtarコマンドにパイプできると思います。私が答えで言ったように、-0オプションは間違いなくあなたが望むものではないので、元の答えは単にそれを削除することであったはずです。PS:コメントスナイプは状況によって正当化できると思います:-)
mcalex

8

試すことができます:

$ curl -s http://example.com/file.tgz | tar xvf - -C dest/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.