私が試したこと:
cat archive.rar | unrar x -
cat archive.rar | unrar x /dev/stdin
cat archive.rar | 7z x -
cat archive.rar | 7z x -si
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(先入れ先出し)ストリームはシークできません。これは、unrar
と7z
の両方がファイルを処理できるようにするために必要なことです(たとえば、両方が機能するtar
とgzip
とは異なります)。ストリーム付き)。
RAR形式の使用とstdoutからのストリーミングの両方が重要である場合は、最初にRAR形式がストリームで機能するかどうかを調査します。
それ以外の場合は、回避策として。次のようなスクリプトを作成できます。
#!/bin/bash
cat /dev/stdin > tmp.rar
unrar x tmp.rar
rm tmp.rar
そして、次のように実行します:cat archive.rar | ./script.sh
アーカイブにビデオファイルが含まれている場合は、VLCを使用してその場で解凍を行うことができます。たとえば、http:を介してrarアーカイブを解凍することができました。
vlc -I dummy http://www.example.com/archive.rar --sout="#duplicate{dst=std{access=file,mux=mp4,dst='file.mp4'}}"