xz
1.0.0
这个Go语言包支持xz压缩流的读写。它还包括用于压缩和解压缩数据的 gxz 命令。该包完全用 Go 编写,不依赖任何 C 代码。
该软件包目前正在开发中。可能存在错误并且 API 被认为不稳定。目前,该软件包在压缩速度和大小方面无法与 xz 工具竞争。那里的算法已经开发了很长时间并且经过了高度优化。然而,计划中有许多改进,我对并行压缩和解压缩非常乐观。敬请关注!
以下示例程序展示了如何使用 API。
package main
import (
"bytes"
"io"
"log"
"os"
"github.com/ulikunitz/xz"
)
func main () {
const text = "The quick brown fox jumps over the lazy dog. n "
var buf bytes. Buffer
// compress text
w , err := xz . NewWriter ( & buf )
if err != nil {
log . Fatalf ( "xz.NewWriter error %s" , err )
}
if _ , err := io . WriteString ( w , text ); err != nil {
log . Fatalf ( "WriteString error %s" , err )
}
if err := w . Close (); err != nil {
log . Fatalf ( "w.Close error %s" , err )
}
// decompress buffer and write output to stdout
r , err := xz . NewReader ( & buf )
if err != nil {
log . Fatalf ( "NewReader error %s" , err )
}
if _ , err = io . Copy ( os . Stdout , r ); err != nil {
log . Fatalf ( "io.Copy error %s" , err )
}
}
您可以在 pkg.go.dev 找到完整文档。
该软件包包括用于压缩和解压缩的 gxz 命令行实用程序。
使用以下命令进行安装:
$ go get github.com/ulikunitz/xz/cmd/gxz
要测试它,请调用以下命令。
$ gxz bigfile
一段时间后,一个小得多的文件 bigfile.xz 将取代 bigfile。要解压缩它,请使用以下命令。
$ gxz -d bigfile.xz
安全策略记录在 SECURITY.md 中。
该软件不受对原始 xz 实现 CVE-2024-3094 的供应链攻击的影响。此实现不与原始 xz 实现共享任何文件,并且未经审查不会接受任何补丁或拉取请求。
该项目的所有安全建议均发布在 github.com/ulikunitz/xz/security/advisories 下。