我需要创建一个任意大的tar文件进行测试,但不要让它命中磁盘。
最简单的方法是什么?
答案 0 :(得分:5)
您可以轻松使用python生成这样的tarfile:
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()
michael@challenger:~$ ./mktar.py | tar tvf -
-rw-r--r-- 0/0 16777216 2012-08-02 13:39 fizzbuzz.data
答案 1 :(得分:0)
您可以将tar与-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。您可以通过启动大文件提取并随时间跟踪文件大小来演示此行为;它应该是大部分处理时间为零并且在最后阶段开始增长。另一方面,我没有对此进行过广泛的研究,可能会有一些工作,或者我的第一手记忆体验可能是完全错误的。