Golang:将文件追加到现有的tar归档文件中

Golang:将文件追加到现有的tar归档文件中,第1张

Golang:将文件追加到现有的tar归档文件中

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存