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
출력이 진행률 표시기와 혼합되므로 출력 옵션을 조정해야 할 수도 있습니다.wget
wget
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 옵션이 필요한지 이해가 안 되지만 꼭 사용해야 한다면 다음과 같이 할 수 있습니다.--transform
tar
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 -