2012-08-02 30 views

回答

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

注意:這將耗盡您的系統在Linux上的熵。不一定是問題,但需要注意的一點。 – 2012-08-02 17:50:03

+0

不使用urandom。我只是測試了它,而我的entropy_avail實際上是從129到184. – MikeyB 2012-08-02 18:08:44

+0

使用urandom從池中抽取一些熵,儘管它不像熵隨機那樣依賴於熵池;更可能的是它觸發了低水印,系統在檢查之前生成了更多的熵。這也可能是你的系統有一個HRNG。 – 2012-08-02 18:17:19

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。您可以通過開始大文件提取和隨着時間的文件大小來演示此行爲;大部分處理時間應該爲零,並且在非常晚的階段開始生長。另一方面,我還沒有廣泛研究過這個問題,可能會有一些解決辦法,或者我可能會對我的第一手內存不足的體驗感到失望。