web-dev-qa-db-ja.com

wgetの結果のtar

ファイルをwgetしてtarしたいのですが、1つのコマンドで簡単だと思いますが、実行できません。私はいくつかのことを試しました。

wget <url> | tar -cvz file.gz.tar -

tar -cvzf file.tar `wget <url>`

wget -qO <url> | tar -cvf file.tar

wget <url> -O - | tar

何か助けは?

本当にファイルをtarしたいですか、それともファイルを圧縮形式でダウンロードしたいですか。ファイルのタール化とは、(圧縮されていない)ファイルを(圧縮されていない)アーカイブにバンドルすることです。ファイルを圧縮ファイルにダウンロードする場合は、以下を使用できます。

wget -qO - <url>|gzip -c - > file.gz

18
Lambert

そのように入力ストリームを処理することはできません。 filesを処理するように設計されています。説明したとおりにアーカイブを作成できたとしたら、どのように見えますか?どのようにそれを解きますか?作成するファイル名はなく、データのみです。

私はあなたの最善の策は、ファイルを取得し、2つの個別のコマンドでtarすることだと思います。ファイルをドライブに残したくない場合は、tarの--remove-filesフラグを使用できます。

wget http://example.com/filename && tar cvzf file.tgz --remove-files filename
8
terdon

これはあなたが望むようには機能しません。ファイル(明らかにファイル名付き)をtarに保存する必要があります。ダウンロードの内容をtarにパイプするだけでは、そのビット(ファイル名)は明らかに欠落しています。 tarstdinをパックし、そのファイル名を指定する必要があることをpythonに伝える方法はありません。

とは言っても、標準のunixコマンドでそれを実現する方法は本当にわかりません。もちろん、代わりに自分で何かを書くことができるかもしれません。たとえば、-VARIABLE--モジュールとrequestおよびtarfileモジュールを使用すると、コーディングが少し便利な場合はそれほど難しくありません。

それまで、または利用可能なunixコマンドに依存する必要がある場合は、一時ファイルへのダウンロード、風袋引き、ファイルの削除に固執する必要があります。ファイル名を複数回指定する必要がないように、変数を使用することをお勧めします。

DOWNLOAD=<FILENAME>; wget <DOMAIN>/$DOWNLOAD && tar -cvf $DOWNLOAD.tar --remove-files $DOWNLOAD
3
inVader
wget -qO - <url> |gzip -c > file_name.gz

-cstdoutの場合。それは> 中古。ファイルは、標準出力ライブラリを使用してwget serializeからfile_name.gzに取得します。

-qO出力ファイルを送信します

1