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

관련 정보