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標準出力にファイルを書き込むように指示することで、これら2つのコマンドを組み合わせてファイルの書き込みをスキップできます。

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 -

関連情報