在tar文件中获取文件字节偏移量(和长度)的方法 [英] Method to get file byte offsets (and lengths) in tar files

查看:0
本文介绍了在tar文件中获取文件字节偏移量(和长度)的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

有没有一种简单的方法可以创建一个索引,告诉我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的检查节省了内存。我相信这会更整洁。

这篇关于在tar文件中获取文件字节偏移量(和长度)的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆