2017-03-27 39 views
0

我有一個包含數百萬個文件的大型tar文件。出於效率原因,我不想將文件解壓縮到磁盤。在tar文件中獲取文件字節偏移(和長度)的方法

相反,給定所需的文件名,我想寫一個腳本,例如Python從tar文件中提取相關數據塊。

是否有一種簡單的方法來創建索引,告訴我tar文件中每個文件的起始字節和長度,例如我可以轉儲到磁盤作爲索引在上面提到的Python腳本中使用?

也許tar命令可以做到這一點,但我沒有看到任何明顯的手冊頁。

焦油未壓縮。

在此先感謝。

回答

0

對於其他的具有類似用途的情況下,益處(即想建立索引使得能夠在一個tar文件隨機接入)到底我在http://fomori.org/blog/?p=391其實質是適於一個方便的實用程序(在Python ):

fp=open('index.txt','wt') 
ctr=0 
with tarfile.open(tarfname, 'r|') as db: 
    for tarinfo in db: 
    currentseek = tarinfo.offset_data 
    rec = "%d\t%d\t%d\t%s\n" % (ctr,tarinfo.offset_data, tarinfo.size, tarinfo.name) 
     fp.write(rec) 
     ctr += 1 
    if ctr % 1000 == 0: 
     db.members = [] 
fp.close() 

校驗原子%1000節省RAM。我相信這可能會更整潔。

-1
tar -O -xf <tar-file> <file-you-want-to-extract> | <your-python-program> 
+0

謝謝,但這將提取文件到磁盤。見OP - 我不想這樣做。我想建立一個tar文件中所有起始字節和長度的索引...然後我將編寫一個腳本來尋找相關位置並提取數據。 – jcollomosse

+0

我修改了linux命令以避免磁盤。恕我直言,避免重新編寫焦油。 – Mark

相關問題