Como unrar o STDIN?

2

O que tentei:

  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

O unrar não reconhece o nome do arquivo - e diz Seek error in the file /dev/stdin para /dev/stdin

7z reclama Error: : E_NOTIMPL

Então, isso é possível? Qualquer outra ferramenta para ler os arquivos RAR do STDOUT de outro programa?

(Nota: claro, o cat aqui é apenas para um exemplo, os arquivos podem ser recuperados com wget ou algo semelhante, mas eles não são locais.)

    
por Alexander Shcheblikin 29.01.2014 / 23:56

2 respostas

4

Fluxos FIFO (first-in-first-out) como /dev/stdin não são procurados, e é aparentemente que ambos unrar e 7z precisam ser capazes de processar os arquivos (diferente de tar e gzip que ambos trabalham com fluxos).

Se o uso do formato RAR e o streaming do stdout forem importantes para você, primeiro investigarei se o formato RAR funcionará com os fluxos.

Caso contrário, para uma solução alternativa; você pode fazer um script como este:

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

E, em seguida, execute da seguinte forma: cat archive.rar | ./script.sh

    
por 30.01.2014 / 00:36
0

Se o seu arquivo contiver um arquivo de vídeo, você poderá fazer a descompressão com o VLC na hora. Por exemplo, eu consegui descompactar um arquivo rar através do http:

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