아카이브를 디스크에 저장하지 않고 어떻게 아카이브를 다운로드하고 압축을 풀 수 있나요?

아카이브를 디스크에 저장하지 않고 어떻게 아카이브를 다운로드하고 압축을 풀 수 있나요?

특정 디렉토리에 아카이브를 다운로드하고 압축을 풀고 싶습니다. 지금까지 내가 한 일은 다음과 같습니다.

wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz
tar zxf dbt2-0.37.50.3.tar.gz
mv dbt2-0.37.50.3 dbt2

아카이브를 다운로드하고 압축을 풀고 싶습니다.비행 중, 디스크에 쓸 필요가 없습니다 tar.gz. 출력을 파이프 wget로 연결하여 대상을 tar제공하는 것이 가능할 것이라고 생각했지만 tar실제로는 조각을 어떻게 합치는지 모르겠습니다.

답변1

wget페이로드를 표준 출력( flag 사용 -O-)으로 출력하고 자체 출력을 억제( flag 사용 )하도록 지시하여 -q이를 수행 할 수 있습니다 .

wget -qO- your_link_here | tar xvz

대상 디렉토리를 지정하십시오:

wget -qO- your_link_here | tar xvz -C /target/directory

GNU가 있는 경우 tar출력 디렉터리의 이름을 바꿀 수도 있습니다.

wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz

답변2

또 다른 옵션은 기본 curl쓰기를 사용하는 것입니다.stdout

curl -s -L https://example.com/archive.tar.gz | tar xvz - -C /tmp

답변3

이 oneliner는 다음과 같은 작업을 수행합니다.

tar xvzf -C /tmp/ < <(wget -q -O - http://foo.com/myfile.tar.gz)

간단한 설명: 대괄호의 오른쪽이 먼저 실행됩니다( -qwget에게 조용히 실행하도록 지시하며 -O -이는 출력을 stdout에 쓰는 데 사용됩니다).

그런 다음 Bash에서 프로세스 대체 연산자를 사용하여 명명된 파이프를 생성합니다 <(.명명된 파이프. 이러한 방식으로 임시 파일 설명자를 만든 다음 파일 리디렉션 연산자를 사용하여 해당 설명자의 내용을 tar로 보냅니다 <.

답변4

리디렉션을 처리하고 파일을 추출할 수 있는 라이너입니다 tar.bz2. xzgzip 파일을 추출 하는 데 사용됩니다 .

curl -L https://downloads.getmonero.org/cli/linux64 | tar xj

관련 정보