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