32 lines
566 B
Go
32 lines
566 B
Go
package zfs
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os/exec"
|
|
"time"
|
|
)
|
|
|
|
type Snapshot struct {
|
|
SnapshotName string // Name sans dataset (the part after the '@')
|
|
Name string // Full dataset@snapname
|
|
Dataset string
|
|
Creation time.Time
|
|
GUID int64
|
|
}
|
|
|
|
func Cmd(ctx context.Context, arg string, a ...any) ([]byte, error) {
|
|
if len(a) > 0 {
|
|
arg = fmt.Sprintf(arg, a...)
|
|
}
|
|
|
|
cmd := exec.CommandContext(ctx, "/bin/sh", "-c", arg)
|
|
|
|
fmt.Printf("zfs: %+v\n", arg)
|
|
out, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return out, err
|
|
}
|
|
return out, err
|
|
}
|