创建任意数据和大小的tar流

时间:2012-08-02 17:41:16

标签: tar

我需要创建一个任意大的tar文件进行测试,但不要让它命中磁盘。

最简单的方法是什么?

2 个答案:

答案 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。您可以通过启动大文件提取并随时间跟踪文件大小来演示此行为;它应该是大部分处理时间为零并且在最后阶段开始增长。另一方面,我没有对此进行过广泛的研究,可能会有一些工作,或者我的第一手记忆体验可能是完全错误的。