tar文件的格式

tar格式的设计最初是为了在磁带上归档一堆文件。

一个tar文件由一个个文件块构成,每个文件块都是一个原本文件的封装。

文件块顺序摆放,在末尾加上一个全0的512字节标志。但是实际上这个标志不一定存在(例如我拿到的一个tar文件就么有这512个0),因此打开tar文件的时候不能依赖这个标志,而要依赖文件结尾来判断tar文件的结束。


每个文件块由一个个block(512字节)构成,这也是结束标志是512字节的原因所在。

每个文件块的开头第一个block是一个header,是tar格式的封装信息。其余block是将原文件按照512字节分块之后,依次存储下来的,末尾补0以对其到512字节。如果文件刚好是512字节的倍数,那就不用补0了,因此文件大小和tar打包之后占用的block数的计算是

                        Block数 = (文件字节数 + 511)/ 512


header的结构如下:

struct header {
        char    name[100];
        char    mode[8];
        char    uid[8];
        char    gid[8];
        char    size[12];
        char    mtime[12];
        char    chksum[8];
        char    linkflag;
        char    linkname[100];
        char    magic[8];
        char    uname[32];
        char    gname[32];
        char    devmajor[8];
        char    devminor[8];
        char    prefix[155]
        char    padding[12];
 };

所有字节都被解释为了ascii字符,因此每个字段以 '\0'结尾。

其中

size和checksum是8进制数

mtime使用   “Unix时间”。

linkflag是'5'表示这个文件是目录,那么这个文件块将没有数据,下一个block就是下一个文件块。其余情况还有“符号链接”等等,这里暂时不深入讨论,可以参考:http://www.moon-soft.com/program/FORMAT/comm/tar.htm

magic是一个字符串"ustar",用于标示这是一个tar文件(头)。


以上是header中比较有用的部分,其余暂时我还用不到,因不理会。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值