web-dev-qa-db-ja.com

STDINをunrarする方法は?

私が試したこと:

  1. cat archive.rar | unrar x -
  2. cat archive.rar | unrar x /dev/stdin
  3. cat archive.rar | 7z x -
  4. cat archive.rar | 7z x -si
  5. cat archive.rar | 7z l -si

unrar-ファイル名を完全に認識せず、Seek error in the file /dev/stdinに対して/dev/stdinと言います

7z文句を言うError: : E_NOTIMPL

それで、これは可能ですか?別のプログラムのSTDOUTからRARアーカイブを読み取るための他のツールはありますか?

(注:もちろん、ここでのcatは単なる例であり、アーカイブファイルは実際にはwgetなどで取得できますが、ローカルではありません。)

/dev/stdinのようなFIFO(先入れ先出し)ストリームはシークできません。これは、unrar7zの両方がファイルを処理できるようにするために必要なことです(たとえば、両方が機能するtargzipとは異なります)。ストリーム付き)。

RAR形式の使用とstdoutからのストリーミングの両方が重要である場合は、最初にRAR形式がストリームで機能するかどうかを調査します。

それ以外の場合は、回避策として。次のようなスクリプトを作成できます。

#!/bin/bash
cat /dev/stdin > tmp.rar
unrar x tmp.rar
rm tmp.rar

そして、次のように実行します:cat archive.rar | ./script.sh

4
Nils

アーカイブにビデオファイルが含まれている場合は、VLCを使用してその場で解凍を行うことができます。たとえば、http:を介してrarアーカイブを解凍することができました。

vlc -I dummy http://www.example.com/archive.rar --sout="#duplicate{dst=std{access=file,mux=mp4,dst='file.mp4'}}"
0
Konstantin