diff --git a/src/internal/kopia/snapshot_manager.go b/src/internal/kopia/snapshot_manager.go index 8fc950dd2..b3bd2a151 100644 --- a/src/internal/kopia/snapshot_manager.go +++ b/src/internal/kopia/snapshot_manager.go @@ -24,6 +24,9 @@ const ( // (permalinks) // [1] https://github.com/kopia/kopia/blob/05e729a7858a6e86cb48ba29fb53cb6045efce2b/cli/command_snapshot_create.go#L169 userTagPrefix = "tag:" + + // Tag key applied to checkpoints (but not completed snapshots) in kopia. + checkpointTagKey = "checkpoint" ) type Reason struct { diff --git a/src/internal/kopia/wrapper.go b/src/internal/kopia/wrapper.go index 0976bb40e..a27b9a590 100644 --- a/src/internal/kopia/wrapper.go +++ b/src/internal/kopia/wrapper.go @@ -192,6 +192,24 @@ func (w Wrapper) makeSnapshotWithRoot( snapIDs, ) + checkpointTagK, checkpointTagV := makeTagKV(checkpointTagKey) + + tags := map[string]string{} + checkpointTags := map[string]string{ + checkpointTagK: checkpointTagV, + } + + for k, v := range addlTags { + mk, mv := makeTagKV(k) + + if len(v) == 0 { + v = mv + } + + tags[mk] = v + checkpointTags[mk] = v + } + err := repo.WriteSession( ctx, w.c, @@ -228,6 +246,7 @@ func (w Wrapper) makeSnapshotWithRoot( u := snapshotfs.NewUploader(rw) progress.UploadProgress = u.Progress u.Progress = progress + u.CheckpointLabels = checkpointTags man, err = u.Upload(innerCtx, root, policyTree, si, prevSnaps...) if err != nil { @@ -236,17 +255,7 @@ func (w Wrapper) makeSnapshotWithRoot( return err } - man.Tags = map[string]string{} - - for k, v := range addlTags { - mk, mv := makeTagKV(k) - - if len(v) == 0 { - v = mv - } - - man.Tags[mk] = v - } + man.Tags = tags if _, err := snapshot.SaveSnapshot(innerCtx, rw, man); err != nil { err = errors.Wrap(err, "saving snapshot")