checkpoint-restore/go-criu
GitHub: checkpoint-restore/go-criu
go-criu 为 CRIU 进程检查点/恢复工具提供 Go 语言绑定和镜像文件操作能力,简化在 Go 项目中集成进程快照与迁移的开发流程。
Stars: 245 | Forks: 60
# go-criu -- CRIU 的 Go 绑定
[](https://github.com/checkpoint-restore/go-criu/actions/workflows/main.yml)
[](https://github.com/checkpoint-restore/go-criu/actions/workflows/verify.yml)
[](https://pkg.go.dev/github.com/checkpoint-restore/go-criu)
本仓库提供了 [CRIU](https://criu.org/) 的 Go 绑定。
该代码基于 CRIU 仓库中基于 Go 的 PHaul 实现。
为了更方便地集成到其他 Go 项目中,CRIU 的 Go 绑定已被
迁移到此仓库中。
## CRIU
Go 绑定提供了一种简便的方式,可以直接在 Go 中使用 CRIU RPC 调用,
而无需设置所有底层基础设施来建立与 CRIU 的实际 RPC 连接。
以下示例将打印 CRIU 的版本:
```
import (
"log"
"github.com/checkpoint-restore/go-criu/v8"
)
func main() {
c := criu.MakeCriu()
version, err := c.GetCriuVersion()
if err != nil {
log.Fatalln(err)
}
log.Println(version)
}
```
或者仅仅检查是否至少安装了某个特定的 CRIU 版本:
```
c := criu.MakeCriu()
result, err := c.IsCriuAtLeast(31100)
```
## CRIT
`crit` 包提供了在 Go 中原生解码、编码和操作
CRIU 镜像文件的绑定。它还提供了一个类似于
原始 CRIT Python 工具的 CLI 工具。要开始使用它,请参阅
[CRIT (Go 库)](https://criu.org/CRIT_%28Go_library%29) 的文档。
## 发布版本
第一个 go-criu 发布版本是基于 CRIU 3.11 的 3.11。最初的计划
是跟随 CRIU 的版本号,使得 go-criu 能够使用与
CRIU 相同的版本号。
由于 go-criu 被其他项目导入,且 Go 模块需要
遵循语义化版本控制,因此从 4.0.0 版本开始,go-criu 也将遵循语义化版本控制。
下表展示了 go-criu 和 criu 版本之间的对应关系:
| 主版本号 | 最新发布版本 | CRIU 版本 |
| -------------- | -------------- | ------------ |
| v8 | 8.3.0 | 4.2 |
| v7 | 7.2.0 | 3.19 |
| v7 | 7.0.0 | 3.18 |
| v6 | 6.3.0 | 3.17 |
| v5 | 5.3.0 | 3.16 |
| v5 | 5.0.0 | 3.15 |
| v4 | 4.1.0 | 3.14 |
## 许可证与版权
除非在特定文件的头部另有说明,本项目中的所有代码
均在 Apache 2.0 许可证下发布。
变更的作者保留其代码的版权
(不进行版权转让)。作者和贡献者列表可以从 git 提交记录中获取,
在某些情况下,也可以从文件头部获取。
标签:EVTX分析, Prisma Cloud, 文档结构分析, 日志审计