2

Что я пробовал:

  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

Так это возможно? Любой другой инструмент для чтения архивов RAR из STDOUT другой программы?

(Примечание: конечно, cat здесь только для примера, архивные файлы могут быть получены с помощью wget или чего-то подобного, но они не являются локальными.)

2 ответа2

4

Потоки FIFO («первым пришел - первым обслужен»), такие как /dev/stdin , не доступны для поиска, и это, очевидно, то, что 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

0

Если ваш архив содержит видеофайл, вы можете распаковать VLC на лету. Например, мне удалось распаковать RAR-архив через http:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .