ファイルを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
そのように入力ストリームを処理することはできません。 filesを処理するように設計されています。説明したとおりにアーカイブを作成できたとしたら、どのように見えますか?どのようにそれを解きますか?作成するファイル名はなく、データのみです。
私はあなたの最善の策は、ファイルを取得し、2つの個別のコマンドでtarすることだと思います。ファイルをドライブに残したくない場合は、tarの--remove-files
フラグを使用できます。
wget http://example.com/filename && tar cvzf file.tgz --remove-files filename
これはあなたが望むようには機能しません。ファイル(明らかにファイル名付き)をtarに保存する必要があります。ダウンロードの内容をtar
にパイプするだけでは、そのビット(ファイル名)は明らかに欠落しています。 tar
にstdin
をパックし、そのファイル名を指定する必要があることをpython
に伝える方法はありません。
とは言っても、標準のunixコマンドでそれを実現する方法は本当にわかりません。もちろん、代わりに自分で何かを書くことができるかもしれません。たとえば、-VARIABLE--モジュールとrequest
およびtarfile
モジュールを使用すると、コーディングが少し便利な場合はそれほど難しくありません。
それまで、または利用可能なunixコマンドに依存する必要がある場合は、一時ファイルへのダウンロード、風袋引き、ファイルの削除に固執する必要があります。ファイル名を複数回指定する必要がないように、変数を使用することをお勧めします。
DOWNLOAD=<FILENAME>; wget <DOMAIN>/$DOWNLOAD && tar -cvf $DOWNLOAD.tar --remove-files $DOWNLOAD
wget -qO - <url> |gzip -c > file_name.gz
-c
stdoutの場合。それは>
中古。ファイルは、標準出力ライブラリを使用してwget serializeからfile_name.gzに取得します。
-qO
出力ファイルを送信します