该
tar文件规范状态:
tar归档文件由一系列512字节的记录组成。每个文件系统对象都需要一个标头记录,该记录存储基本元数据(路径名,所有者,权限等)以及零个或多个包含任何文件数据的记录。归档的末尾由两个完全由零字节组成的记录指示。
添加这两个零填充记录的Go实现在此处进行。
要绕开
tar文件格式预告片(基本上是1024个字节,什么也没有),您可以替换以下行:
f, err = os.OpenFile("/home/jeff/Desktop/test.tar", os.O_APPEND|os.O_WRONLY, os.ModePerm)if err != nil { log.Fatalln(err)}tw = tar.NewWriter(f)
带有:
f, err = os.OpenFile("/home/jeff/Desktop/test.tar", os.O_RDWR, os.ModePerm)if err != nil { log.Fatalln(err)}if _, err = f.Seek(-1024, os.SEEK_END); err != nil { log.Fatalln(err)}tw = tar.NewWriter(f)
它打开文件读/写(而不是附加/只写),然后在文件末尾查找1024个字节并从那里写。
它可以工作, 但这 是 一个可怕的骇客。
编辑:
tar更好地了解文件规范后,我不再相信这是一个hack。
完整代码:http://play.golang.org/p/0zRScmY4AC
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)