tar文件结构

什么是tar文件

tar文件是以一定的方式,将多文件合成一个单文件,并不对文件进行压缩处理。tar最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。

tar包的结构

文件头 – 文件内容 – 文件头 – 文件内容 ------ 文件末尾


type Header struct {
	name     [100]byte
	mode     [8]byte
	owner    [8]byte
	group    [8]byte
	size     [12]byte
	mtime    [12]byte
	checkSum [8]byte
	fileType byte
	linkName [100]byte
	magic	 [6]byte
  version	 [2]byte
  uname	 [32]byte
  gname	 [32]byte
  devmajor [8]byte
  devminor [8]byte
  prefix   [155]byte
  padding  [12]byte
}

以上是Tar中保存文件信息的数据结构,其后跟着的就是文件的内容。

  • 其中,文件大小,修改时间,checksum都是存储的对应的八进制字符串,字符串最后一个字符为空格字符
  • checksum的计算方法为出去checksum字段其他所有的512-8共504个字节的Ascii码相加的值再加上256
  • 文件内容以512字节为一个块进行分割,最后一个块不足部分以0补齐
  • 多个文件合成的tar,存储格式为:tar的头结构,文件体,tar头,文件体……。当所有文件都存储完成后,在文件末尾补上一个全零的tar结构(即1024个零值)
  • 所有的tar文件大小都是512的倍数
  • 一个空的文件,打包成tar后,为512*3个字节

新建一个空的tar,用010 Editor打开,如下:

新建文本文档.tar

检测tar文件格式的方法:

1、检测magic字段,即在0x101处检查字符串,是否为ustar。有时某些压缩软件将这个字段设置为空。如果magic字段为空,进入第2步。
2、计算校验和,按照上面的方法计算校验和,如果校验和正确的话,那么这就是一个tar文件。

注意:在windows下面,不支持uid、uname等,有的甚至不支持magic,这样就比较麻烦了。

参照:https://www.cnblogs.com/stephen-init/archive/2012/10/09/2716779.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值