mirror of
https://github.com/kopia/kopia.git
synced 2026-02-02 02:33:14 -05:00
This is useful when backing up directories that have giant files aligned at MiB boundary, such as VM disk backups, etc.
47 lines
1.1 KiB
Go
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
|
|
}
|