3
A
回答
5
您可以轻松地使用Python来产生这样的tar文件:
mktar.py
:
#!/usr/bin/python
import datetime
import sys
import tarfile
tar = tarfile.open(fileobj=sys.stdout, mode="w|")
info = tarfile.TarInfo(name="fizzbuzz.data")
info.mode = 0644
info.size = 1048576 * 16
info.mtime = int(datetime.datetime.now().strftime('%s'))
rand = open('/dev/urandom', 'r')
tar.addfile(info,rand)
tar.close()
[email protected]:~$ ./mktar.py | tar tvf -
-rw-r--r-- 0/0 16777216 2012-08-02 13:39 fizzbuzz.data
0
您可以使用焦油-O选项tar -O
,这样tar -xOzf foo.tgz bigfile | process
https://www.gnu.org/software/tar/manual/html_node/Writing-to-Standard-Output.html
PS:但是,它可能是,你不会得到你打算获得的好处,因为tar只有在读完整个压缩文件后才开始写stdout。您可以通过开始大文件提取和随着时间的文件大小来演示此行为;大部分处理时间应该为零,并且在非常晚的阶段开始生长。另一方面,我还没有广泛研究过这个问题,可能会有一些解决办法,或者我可能会对我的第一手内存不足的体验感到失望。
注意:这将耗尽您的系统在Linux上的熵。不一定是问题,但需要注意的一点。 – 2012-08-02 17:50:03
不使用urandom。我只是测试了它,而我的entropy_avail实际上是从129到184. – MikeyB 2012-08-02 18:08:44
使用urandom从池中抽取一些熵,尽管它不像熵随机那样依赖于熵池;更可能的是它触发了低水印,系统在检查之前生成了更多的熵。这也可能是你的系统有一个HRNG。 – 2012-08-02 18:17:19