我已尝试过:
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
或类似的东西来检索,但它们不是本地的。)
答案1
像 FIFO(先进先出)流/dev/stdin
是不可查找的,这显然是unrar
和7z
需要能够处理文件的原因(不同于例如tar
和gzip
两者都可以使用流)。
如果使用 RAR 格式和从标准输出进行流式传输对您来说都很重要,我会首先研究 RAR 格式是否可以与流一起使用。
否则,为了解决这个问题,您可以编写如下脚本:
#!/bin/bash
cat /dev/stdin > tmp.rar
unrar x tmp.rar
rm tmp.rar
然后像这样运行它:cat archive.rar | ./script.sh
答案2
如果您的存档包含视频文件,您可以使用 VLC 即时解压。例如,我设法通过 http: 解压了一个 rar 存档
vlc -I dummy http://www.example.com/archive.rar --sout="#duplicate{dst=std{access=file,mux=mp4,dst='file.mp4'}}"