tar:サブフォルダを作成せずに個々のファイルをディレクトリに抽出します。

tar:サブフォルダを作成せずに個々のファイルをディレクトリに抽出します。

私の目標は、できるだけ少ないステップを経て、システムにhelmバイナリをインポートすることです。問題は、ファイルのサブディレクトリにバイナリが含まれていることです。helm-v2.5.0-linux-amd64.tar.gz/usr/local/bin.tar.gzlinux-amd64

だから私がするとき:

$ wget -P /tmp https://storage.googleapis.com/kubernetes-helm/helm-v2.5.0-linux-amd64.tar.gz
$ tar -xzvf /tmp/helm-v2.5.0-linux-amd64.tar.gz -C /usr/local/bin linux-amd64/helm

私が終わった/usr/local/bin/linux-amd64/helmのは/usr/local/bin/linux-amd64/helm

パラメータが欠落しているか、いくつかのクリーンアップステップをtar含める必要がありますか?mv

答え1

以下を使用する必要があります--strip-components=NUMBER

--strip-components=NUMBER
          Strip NUMBER leading components from file names on extraction.

これは、コマンドが次のようになることを意味します。

tar -xzvf /tmp/helm-v2.5.0-linux-amd64.tar.gz -C /usr/local/bin --strip-components=1 linux-amd64/helm

答え2

別の方法は、wget入力を直接パイプし、tar変換パラメータを使用することです。

wget -O- https://storage.googleapis.com/kubernetes-helm/helm-v2.5.0-linux-amd64.tar.gz | tar --transform 's!linux-amd64!/usr/local/bin!' -Pxzf - linux-amd64/helm

関連情報