在tar文件中获取文件字节偏移量(和长度)的方法文件、字节、长度、方法

2023-09-03 13:25:51 作者:一倾风月一流年

我有一个包含数百万个文件的大型tar文件。出于效率原因,我不想将文件解压缩到磁盘。

相反,给定一个所需的文件名,我想编写一个脚本(例如,Python)来从tar文件中提取相关的数据块。

fatfs结构及源码分析 hanchaoman的专栏 CSDN博客

有没有一种简单的方法可以创建一个索引,告诉我tar文件中每个文件的起始字节和长度,例如,我可以将其作为索引转储到磁盘中,以便在上述Python脚本中使用?

也许tar命令可以做到这一点,但我在手册页中看不到任何明显的东西。

未压缩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	%d	%d	%s
" % (ctr,tarinfo.offset_data, tarinfo.size, tarinfo.name)
       fp.write(rec)
       ctr += 1
     if ctr % 1000 == 0:
        db.members = []
fp.close()
%1000的检查节省了内存。我相信这会更整洁。