我有一個包含數百萬個文件的大型tar文件。出於效率原因,我不想將文件解壓縮到磁盤。在tar文件中獲取文件字節偏移(和長度)的方法
相反,給定所需的文件名,我想寫一個腳本,例如Python從tar文件中提取相關數據塊。
是否有一種簡單的方法來創建索引,告訴我tar文件中每個文件的起始字節和長度,例如我可以轉儲到磁盤作爲索引在上面提到的Python腳本中使用?
也許tar命令可以做到這一點,但我沒有看到任何明顯的手冊頁。
焦油未壓縮。
在此先感謝。
我有一個包含數百萬個文件的大型tar文件。出於效率原因,我不想將文件解壓縮到磁盤。在tar文件中獲取文件字節偏移(和長度)的方法
相反,給定所需的文件名,我想寫一個腳本,例如Python從tar文件中提取相關數據塊。
是否有一種簡單的方法來創建索引,告訴我tar文件中每個文件的起始字節和長度,例如我可以轉儲到磁盤作爲索引在上面提到的Python腳本中使用?
也許tar命令可以做到這一點,但我沒有看到任何明顯的手冊頁。
焦油未壓縮。
在此先感謝。
對於其他的具有類似用途的情況下,益處(即想建立索引使得能夠在一個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。我相信這可能會更整潔。
tar -O -xf <tar-file> <file-you-want-to-extract> | <your-python-program>
謝謝,但這將提取文件到磁盤。見OP - 我不想這樣做。我想建立一個tar文件中所有起始字節和長度的索引...然後我將編寫一個腳本來尋找相關位置並提取數據。 – jcollomosse
我修改了linux命令以避免磁盤。恕我直言,避免重新編寫焦油。 – Mark