Files
kopia/cli/command_policy_set_splitter.go
Jarek Kowalski e36fa78385 feat(snapshots): added support for per-directory splitter overrides (#3887)
This is useful when backing up directories that have giant files aligned
at MiB boundary, such as VM disk backups, etc.
2024-06-07 13:42:15 -07:00

47 lines
1.1 KiB
Go

package cli
import (
"context"
"sort"
"github.com/alecthomas/kingpin/v2"
"github.com/kopia/kopia/repo/splitter"
"github.com/kopia/kopia/snapshot/policy"
)
type policySplitterFlags struct {
policySetSplitterAlgorithmOverride string
}
func (c *policySplitterFlags) setup(cmd *kingpin.CmdClause) {
cmd.Flag("splitter", "Splitter algorithm override").EnumVar(&c.policySetSplitterAlgorithmOverride, supportedSplitterAlgorithms()...)
}
//nolint:unparam
func (c *policySplitterFlags) setSplitterPolicyFromFlags(ctx context.Context, p *policy.SplitterPolicy, changeCount *int) error {
if v := c.policySetSplitterAlgorithmOverride; v != "" {
if v == inheritPolicyString {
log(ctx).Infof(" - resetting splitter algorithm override to default value inherited from parent")
p.Algorithm = ""
} else {
log(ctx).Infof(" - setting splitter algorithm override to %v", v)
p.Algorithm = v
}
*changeCount++
}
return nil
}
func supportedSplitterAlgorithms() []string {
res := append([]string{inheritPolicyString}, splitter.SupportedAlgorithms()...)
sort.Strings(res)
return res
}