Files
kopia/cli/command_index_optimize.go
Jarek Kowalski 54edb97b3a refactoring: renamed repo/block to repo/content
Also introduced strongly typed content.ID and manifest.ID (instead of string)

This aligns identifiers across all layers of repository:

blob.ID
content.ID
object.ID
manifest.ID
2019-06-01 22:24:19 -07:00

30 lines
1.2 KiB
Go

package cli
import (
"context"
"github.com/kopia/kopia/repo"
"github.com/kopia/kopia/repo/content"
)
var (
optimizeCommand = indexCommands.Command("optimize", "Optimize indexes blobs.")
optimizeMinSmallBlobs = optimizeCommand.Flag("min-small-blobs", "Minimum number of small index blobs that can be left after compaction.").Default("1").Int()
optimizeMaxSmallBlobs = optimizeCommand.Flag("max-small-blobs", "Maximum number of small index blobs that can be left after compaction.").Default("1").Int()
optimizeSkipDeletedOlderThan = optimizeCommand.Flag("skip-deleted-older-than", "Skip deleted blobs above given age").Duration()
optimizeAllIndexes = optimizeCommand.Flag("all", "Optimize all indexes, even those above maximum size.").Bool()
)
func runOptimizeCommand(ctx context.Context, rep *repo.Repository) error {
return rep.Content.CompactIndexes(ctx, content.CompactOptions{
MinSmallBlobs: *optimizeMinSmallBlobs,
MaxSmallBlobs: *optimizeMaxSmallBlobs,
AllIndexes: *optimizeAllIndexes,
SkipDeletedOlderThan: *optimizeSkipDeletedOlderThan,
})
}
func init() {
optimizeCommand.Action(repositoryAction(runOptimizeCommand))
}