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
出力オプションを調整する必要があります。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 -