3

テスト用に任意のサイズの tarfile を作成する必要がありますが、ディスクにヒットさせたくありません。

これを行う最も簡単な方法は何ですか?

4

2 に答える 2

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
于 2012-08-02T17:41:15.723 に答える
0

tar -Oこのように -O オプションで tar を使用できますtar -xOzf foo.tgz bigfile | process

https://www.gnu.org/software/tar/manual/html_node/Writing-to-Standard-Output.html

PS: ただし、tar は圧縮ファイル全体を読み取ってから stdout への書き込みを開始するため、意図した利点が得られない可能性があります。大きなファイルの抽出を開始し、時間の経過に伴うファイル サイズを追跡することで、この動作を実証できます。ほとんどの処理時間はゼロであり、非常に遅い段階で成長を開始する必要があります。一方で、私はこれを広範囲に調査していません。回避策があるかもしれません。または、最初の手のメモリ不足の経験が間違っているだけかもしれません。

于 2017-07-04T08:16:27.027 に答える