wget에서 tar로 스트림을 파이프하고 특정 위치로 추출하는 데 실패합니다.

wget에서 tar로 스트림을 파이프하고 특정 위치로 추출하는 데 실패합니다.

wget에서 tar로 스트림을 전송하고 특정 위치로 추출하려고 합니다.
파일은 wget으로 다운로드되었지만 필요에 따라 tar를 사용하여 압축을 풀지 않았습니다.

war="/var/www/html"
domain="example.com"
downloaded_file="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
wget -P "${war}" "${downloaded_file}" | tar -xzvf ${downloaded_file} --transform="s,^${downloaded_file},${domain},"

set -x실수:

tar: 인식할 수 없는 옵션:
`--transform=s,^https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz,example.com,'

wget에서 tar로의 스트림 파이핑 및 특정 위치로의 추출이 실패하는 이유는 무엇입니까?

답변1

wget표준 출력에 파일을 쓰도록 지시하여 이 두 명령을 결합하고 파일 쓰기를 건너뛸 수 있습니다.

wget https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz -O - |
tar -xzvf -

이로 인해 다운로드하는 동안 타르볼 추출이 시작되므로 tar출력이 진행률 표시기와 혼합되므로 출력 옵션을 조정해야 할 수도 있습니다.wgetwget

tar파일이 추출되는 위치를 제어 하는 ​​데 사용할 수 있는 옵션 -C:

wget https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz -O - |
tar -xzvf - -C /var/www/html

명령을 실행하려면 대상 디렉터리가 있어야 하므로 mkdir필요한 경우 먼저 존재해야 합니다.

답변2

다운로드한 데이터를 파일에 기록하므로 실제로 tar. 여기에서는 파일을 다운로드한 다음 다른 도구로 파일을 열려고 하므로 파이프는 쓸모가 없습니다.

다음 문제는 귀하가 $downloaded_file실제로 URL이라는 것입니다. 따라서 tar -xzvf ${downloaded_file}실제로 실행 하면 tar -xzvf https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz파일이 존재하지 않기 때문에 실패하게 됩니다(파일이 아니고 인터넷 주소입니다).

당신이하고 싶은 일은 이것이다 :

war="/var/www/html"
targetUrl="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
fileName="${targetUrl##*/}"
wget "$targetUrl" -O "$war/$fileName" && 
    tar -xzvf "$war/$fileName"

-P여기서 from 옵션이 왜 wget관련이 있는지, 왜 from 옵션이 필요한지 이해가 안 되지만 꼭 사용해야 한다면 다음과 같이 할 수 있습니다.--transformtar

war="/var/www/html"
domain="example.com"
targetUrl="https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz"
wget "$targetUrl" -O "$war/$fileName" && 
    tar -xzvf "$war/$fileName" --transform="s,^${targetUrl},${domain},"

나는 당신이 이것을 원하는지 정말로 의심합니다. https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz아카이브 경로의 일부인 이유는 무엇입니까 mediawiki-1.33.0.tar.gz?

답변3

wget -qO - "https://releases.wikimedia.org/mediawiki/1.33/mediawiki-1.33.0.tar.gz" | tar -C /var/www/html zxvf -

관련 정보