mirror of
https://github.com/octoleo/restic.git
synced 2024-11-23 05:12:10 +00:00
forget: Display reasons why snapshots are kept
This change displays the reasons for keeping a snapshot in the table, unless `--compact` is specified.
This commit is contained in:
parent
12246969db
commit
9fd3796d93
@ -206,17 +206,17 @@ func runForget(opts ForgetOptions, gopts GlobalOptions, args []string) error {
|
|||||||
}
|
}
|
||||||
Verbosef(":\n\n")
|
Verbosef(":\n\n")
|
||||||
|
|
||||||
keep, remove := restic.ApplyPolicy(snapshotGroup, policy)
|
keep, remove, reasons := restic.ApplyPolicy(snapshotGroup, policy)
|
||||||
|
|
||||||
if len(keep) != 0 && !gopts.Quiet {
|
if len(keep) != 0 && !gopts.Quiet {
|
||||||
Printf("keep %d snapshots:\n", len(keep))
|
Printf("keep %d snapshots:\n", len(keep))
|
||||||
PrintSnapshots(globalOptions.stdout, keep, opts.Compact)
|
PrintSnapshots(globalOptions.stdout, keep, reasons, opts.Compact)
|
||||||
Printf("\n")
|
Printf("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(remove) != 0 && !gopts.Quiet {
|
if len(remove) != 0 && !gopts.Quiet {
|
||||||
Printf("remove %d snapshots:\n", len(remove))
|
Printf("remove %d snapshots:\n", len(remove))
|
||||||
PrintSnapshots(globalOptions.stdout, remove, opts.Compact)
|
PrintSnapshots(globalOptions.stdout, remove, nil, opts.Compact)
|
||||||
Printf("\n")
|
Printf("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/restic/restic/internal/restic"
|
"github.com/restic/restic/internal/restic"
|
||||||
|
"github.com/restic/restic/internal/ui/table"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -81,7 +82,7 @@ func runSnapshots(opts SnapshotOptions, gopts GlobalOptions, args []string) erro
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
PrintSnapshots(gopts.stdout, list, opts.Compact)
|
PrintSnapshots(gopts.stdout, list, nil, opts.Compact)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -123,7 +124,16 @@ func FilterLastSnapshots(list restic.Snapshots) restic.Snapshots {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PrintSnapshots prints a text table of the snapshots in list to stdout.
|
// PrintSnapshots prints a text table of the snapshots in list to stdout.
|
||||||
func PrintSnapshots(stdout io.Writer, list restic.Snapshots, compact bool) {
|
func PrintSnapshots(stdout io.Writer, list restic.Snapshots, reasons []restic.KeepReason, compact bool) {
|
||||||
|
// keep the reasons a snasphot is being kept in a map, so that it doesn't
|
||||||
|
// get lost when the list of snapshots is sorted
|
||||||
|
keepReasons := make(map[restic.ID]restic.KeepReason, len(reasons))
|
||||||
|
if len(reasons) > 0 {
|
||||||
|
for i, sn := range list {
|
||||||
|
id := sn.ID()
|
||||||
|
keepReasons[*id] = reasons[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// always sort the snapshots so that the newer ones are listed last
|
// always sort the snapshots so that the newer ones are listed last
|
||||||
sort.SliceStable(list, func(i, j int) bool {
|
sort.SliceStable(list, func(i, j int) bool {
|
||||||
@ -143,71 +153,72 @@ func PrintSnapshots(stdout io.Writer, list restic.Snapshots, compact bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tab := NewTable()
|
tab := table.New()
|
||||||
if !compact {
|
|
||||||
tab.Header = fmt.Sprintf("%-8s %-19s %-*s %-*s %-3s %s", "ID", "Date", -maxHost, "Host", -maxTag, "Tags", "", "Directory")
|
if compact {
|
||||||
tab.RowFormat = fmt.Sprintf("%%-8s %%-19s %%%ds %%%ds %%-3s %%s", -maxHost, -maxTag)
|
tab.AddColumn("ID", "{{ .ID }}")
|
||||||
|
tab.AddColumn("Time", "{{ .Timestamp }}")
|
||||||
|
tab.AddColumn("Host", "{{ .Hostname }}")
|
||||||
|
tab.AddColumn("Tags ", `{{ join .Tags "\n" }}`)
|
||||||
} else {
|
} else {
|
||||||
tab.Header = fmt.Sprintf("%-8s %-19s %-*s %-*s", "ID", "Date", -maxHost, "Host", -maxTag, "Tags")
|
tab.AddColumn("ID", "{{ .ID }}")
|
||||||
tab.RowFormat = fmt.Sprintf("%%-8s %%-19s %%%ds %%s", -maxHost)
|
tab.AddColumn("Time", "{{ .Timestamp }}")
|
||||||
|
tab.AddColumn("Host ", "{{ .Hostname }}")
|
||||||
|
tab.AddColumn("Tags ", `{{ join .Tags "," }}`)
|
||||||
|
if len(reasons) > 0 {
|
||||||
|
tab.AddColumn("Reasons", `{{ join .Reasons "\n" }}`)
|
||||||
|
}
|
||||||
|
tab.AddColumn("Paths", `{{ join .Paths "\n" }}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type snapshot struct {
|
||||||
|
ID string
|
||||||
|
Timestamp string
|
||||||
|
Hostname string
|
||||||
|
Tags []string
|
||||||
|
Reasons []string
|
||||||
|
Paths []string
|
||||||
|
}
|
||||||
|
|
||||||
|
var multiline bool
|
||||||
for _, sn := range list {
|
for _, sn := range list {
|
||||||
if len(sn.Paths) == 0 {
|
data := snapshot{
|
||||||
continue
|
ID: sn.ID().Str(),
|
||||||
|
Timestamp: sn.Time.Format(TimeFormat),
|
||||||
|
Hostname: sn.Hostname,
|
||||||
|
Tags: sn.Tags,
|
||||||
|
Paths: sn.Paths,
|
||||||
}
|
}
|
||||||
|
|
||||||
firstTag := ""
|
if len(reasons) > 0 {
|
||||||
if len(sn.Tags) > 0 {
|
id := sn.ID()
|
||||||
firstTag = sn.Tags[0]
|
data.Reasons = keepReasons[*id].Matches
|
||||||
}
|
}
|
||||||
|
|
||||||
rows := len(sn.Paths)
|
if len(sn.Paths) > 1 {
|
||||||
if rows < len(sn.Tags) {
|
multiline = true
|
||||||
rows = len(sn.Tags)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
treeElement := " "
|
tab.AddRow(data)
|
||||||
if rows != 1 {
|
|
||||||
treeElement = "┌──"
|
|
||||||
}
|
|
||||||
|
|
||||||
if !compact {
|
|
||||||
tab.Rows = append(tab.Rows, []interface{}{sn.ID().Str(), sn.Time.Format(TimeFormat), sn.Hostname, firstTag, treeElement, sn.Paths[0]})
|
|
||||||
} else {
|
|
||||||
allTags := ""
|
|
||||||
for _, tag := range sn.Tags {
|
|
||||||
allTags += tag + " "
|
|
||||||
}
|
|
||||||
tab.Rows = append(tab.Rows, []interface{}{sn.ID().Str(), sn.Time.Format(TimeFormat), sn.Hostname, allTags})
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(sn.Tags) > rows {
|
|
||||||
rows = len(sn.Tags)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 1; i < rows; i++ {
|
|
||||||
path := ""
|
|
||||||
if len(sn.Paths) > i {
|
|
||||||
path = sn.Paths[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
tag := ""
|
|
||||||
if len(sn.Tags) > i {
|
|
||||||
tag = sn.Tags[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
treeElement := "│"
|
|
||||||
if i == (rows - 1) {
|
|
||||||
treeElement = "└──"
|
|
||||||
}
|
|
||||||
|
|
||||||
tab.Rows = append(tab.Rows, []interface{}{"", "", "", tag, treeElement, path})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tab.Footer = fmt.Sprintf("%d snapshots", len(list))
|
tab.AddFooter(fmt.Sprintf("%d snapshots", len(list)))
|
||||||
|
|
||||||
|
if multiline {
|
||||||
|
// print an additional blank line between snapshots
|
||||||
|
|
||||||
|
var last int
|
||||||
|
tab.PrintData = func(w io.Writer, idx int, s string) error {
|
||||||
|
var err error
|
||||||
|
if idx == last {
|
||||||
|
_, err = fmt.Fprintf(w, "%s\n", s)
|
||||||
|
} else {
|
||||||
|
_, err = fmt.Fprintf(w, "\n%s\n", s)
|
||||||
|
}
|
||||||
|
last = idx
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tab.Write(stdout)
|
tab.Write(stdout)
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/restic/restic/internal/debug"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExpirePolicy configures which snapshots should be automatically removed.
|
// ExpirePolicy configures which snapshots should be automatically removed.
|
||||||
@ -125,41 +127,70 @@ func findLatestTimestamp(list Snapshots) time.Time {
|
|||||||
return latest
|
return latest
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KeepReason specifies why a particular snapshot was kept, and the counters at
|
||||||
|
// that point in the policy evaluation.
|
||||||
|
type KeepReason struct {
|
||||||
|
Snapshot *Snapshot `json:"snapshot"`
|
||||||
|
|
||||||
|
// description text which criteria match, e.g. "daily", "monthly"
|
||||||
|
Matches []string `json:"matches"`
|
||||||
|
|
||||||
|
// the counters after evaluating the current snapshot
|
||||||
|
Counters struct {
|
||||||
|
Last int `json:"last,omitempty"`
|
||||||
|
Hourly int `json:"hourly,omitempty"`
|
||||||
|
Daily int `json:"daily,omitempty"`
|
||||||
|
Weekly int `json:"weekly,omitempty"`
|
||||||
|
Monthly int `json:"monthly,omitempty"`
|
||||||
|
Yearly int `json:"yearly,omitempty"`
|
||||||
|
} `json:"counters"`
|
||||||
|
}
|
||||||
|
|
||||||
// ApplyPolicy returns the snapshots from list that are to be kept and removed
|
// ApplyPolicy returns the snapshots from list that are to be kept and removed
|
||||||
// according to the policy p. list is sorted in the process.
|
// according to the policy p. list is sorted in the process. reasons contains
|
||||||
func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots) {
|
// the reasons to keep each snapshot, it is in the same order as keep.
|
||||||
|
func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots, reasons []KeepReason) {
|
||||||
sort.Sort(list)
|
sort.Sort(list)
|
||||||
|
|
||||||
if p.Empty() {
|
if p.Empty() {
|
||||||
return list, remove
|
for _, sn := range list {
|
||||||
|
reasons = append(reasons, KeepReason{
|
||||||
|
Snapshot: sn,
|
||||||
|
Matches: []string{"policy is empty"},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return list, remove, reasons
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(list) == 0 {
|
if len(list) == 0 {
|
||||||
return list, remove
|
return list, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var buckets = [6]struct {
|
var buckets = [6]struct {
|
||||||
Count int
|
Count int
|
||||||
bucker func(d time.Time, nr int) int
|
bucker func(d time.Time, nr int) int
|
||||||
Last int
|
Last int
|
||||||
|
reason string
|
||||||
}{
|
}{
|
||||||
{p.Last, always, -1},
|
{p.Last, always, -1, "last snapshot"},
|
||||||
{p.Hourly, ymdh, -1},
|
{p.Hourly, ymdh, -1, "hourly snapshot"},
|
||||||
{p.Daily, ymd, -1},
|
{p.Daily, ymd, -1, "daily snapshot"},
|
||||||
{p.Weekly, yw, -1},
|
{p.Weekly, yw, -1, "weekly snapshot"},
|
||||||
{p.Monthly, ym, -1},
|
{p.Monthly, ym, -1, "monthly snapshot"},
|
||||||
{p.Yearly, y, -1},
|
{p.Yearly, y, -1, "yearly snapshot"},
|
||||||
}
|
}
|
||||||
|
|
||||||
latest := findLatestTimestamp(list)
|
latest := findLatestTimestamp(list)
|
||||||
|
|
||||||
for nr, cur := range list {
|
for nr, cur := range list {
|
||||||
var keepSnap bool
|
var keepSnap bool
|
||||||
|
var keepSnapReasons []string
|
||||||
|
|
||||||
// Tags are handled specially as they are not counted.
|
// Tags are handled specially as they are not counted.
|
||||||
for _, l := range p.Tags {
|
for _, l := range p.Tags {
|
||||||
if cur.HasTags(l) {
|
if cur.HasTags(l) {
|
||||||
keepSnap = true
|
keepSnap = true
|
||||||
|
keepSnapReasons = append(keepSnapReasons, fmt.Sprintf("has tags %v", l))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,6 +199,7 @@ func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots) {
|
|||||||
t := latest.AddDate(-p.Within.Years, -p.Within.Months, -p.Within.Days)
|
t := latest.AddDate(-p.Within.Years, -p.Within.Months, -p.Within.Days)
|
||||||
if cur.Time.After(t) {
|
if cur.Time.After(t) {
|
||||||
keepSnap = true
|
keepSnap = true
|
||||||
|
keepSnapReasons = append(keepSnapReasons, fmt.Sprintf("within %v", p.Within))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,19 +208,32 @@ func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots) {
|
|||||||
if b.Count > 0 {
|
if b.Count > 0 {
|
||||||
val := b.bucker(cur.Time, nr)
|
val := b.bucker(cur.Time, nr)
|
||||||
if val != b.Last {
|
if val != b.Last {
|
||||||
|
debug.Log("keep %v %v, bucker %v, val %v\n", cur.Time, cur.id.Str(), i, val)
|
||||||
keepSnap = true
|
keepSnap = true
|
||||||
buckets[i].Last = val
|
buckets[i].Last = val
|
||||||
buckets[i].Count--
|
buckets[i].Count--
|
||||||
|
keepSnapReasons = append(keepSnapReasons, b.reason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if keepSnap {
|
if keepSnap {
|
||||||
keep = append(keep, cur)
|
keep = append(keep, cur)
|
||||||
|
kr := KeepReason{
|
||||||
|
Snapshot: cur,
|
||||||
|
Matches: keepSnapReasons,
|
||||||
|
}
|
||||||
|
kr.Counters.Last = buckets[0].Count
|
||||||
|
kr.Counters.Hourly = buckets[1].Count
|
||||||
|
kr.Counters.Daily = buckets[2].Count
|
||||||
|
kr.Counters.Weekly = buckets[3].Count
|
||||||
|
kr.Counters.Monthly = buckets[4].Count
|
||||||
|
kr.Counters.Yearly = buckets[5].Count
|
||||||
|
reasons = append(reasons, kr)
|
||||||
} else {
|
} else {
|
||||||
remove = append(remove, cur)
|
remove = append(remove, cur)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return keep, remove
|
return keep, remove, reasons
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||||||
"github.com/restic/restic/internal/restic"
|
"github.com/restic/restic/internal/restic"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -52,6 +53,43 @@ func TestExpireSnapshotOps(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ApplyPolicyResult is used to marshal/unmarshal the golden files for
|
||||||
|
// TestApplyPolicy.
|
||||||
|
type ApplyPolicyResult struct {
|
||||||
|
Keep restic.Snapshots `json:"keep"`
|
||||||
|
Reasons []restic.KeepReason `json:"reasons,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadGoldenFile(t testing.TB, filename string) (res ApplyPolicyResult) {
|
||||||
|
buf, err := ioutil.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error loading golden file %v: %v", filename, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(buf, &res)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error unmarshalling golden file %v: %v", filename, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func saveGoldenFile(t testing.TB, filename string, keep restic.Snapshots, reasons []restic.KeepReason) {
|
||||||
|
res := ApplyPolicyResult{
|
||||||
|
Keep: keep,
|
||||||
|
Reasons: reasons,
|
||||||
|
}
|
||||||
|
|
||||||
|
buf, err := json.MarshalIndent(res, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error marshaling result: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = ioutil.WriteFile(filename, buf, 0644); err != nil {
|
||||||
|
t.Fatalf("unable to update golden file: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestApplyPolicy(t *testing.T) {
|
func TestApplyPolicy(t *testing.T) {
|
||||||
var testExpireSnapshots = restic.Snapshots{
|
var testExpireSnapshots = restic.Snapshots{
|
||||||
{Time: parseTimeUTC("2014-09-01 10:20:30")},
|
{Time: parseTimeUTC("2014-09-01 10:20:30")},
|
||||||
@ -191,10 +229,8 @@ func TestApplyPolicy(t *testing.T) {
|
|||||||
|
|
||||||
for i, p := range tests {
|
for i, p := range tests {
|
||||||
t.Run("", func(t *testing.T) {
|
t.Run("", func(t *testing.T) {
|
||||||
keep, remove := restic.ApplyPolicy(testExpireSnapshots, p)
|
|
||||||
|
|
||||||
t.Logf("returned keep %v, remove %v (of %v) expired snapshots for policy %v",
|
keep, remove, reasons := restic.ApplyPolicy(testExpireSnapshots, p)
|
||||||
len(keep), len(remove), len(testExpireSnapshots), p)
|
|
||||||
|
|
||||||
if len(keep)+len(remove) != len(testExpireSnapshots) {
|
if len(keep)+len(remove) != len(testExpireSnapshots) {
|
||||||
t.Errorf("len(keep)+len(remove) = %d != len(testExpireSnapshots) = %d",
|
t.Errorf("len(keep)+len(remove) = %d != len(testExpireSnapshots) = %d",
|
||||||
@ -206,39 +242,26 @@ func TestApplyPolicy(t *testing.T) {
|
|||||||
p.Sum(), len(keep))
|
p.Sum(), len(keep))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, sn := range keep {
|
if len(keep) != len(reasons) {
|
||||||
t.Logf(" keep snapshot at %v %s", sn.Time, sn.Tags)
|
t.Errorf("got %d keep reasons for %d snapshots to keep, these must be equal", len(reasons), len(keep))
|
||||||
}
|
|
||||||
for _, sn := range remove {
|
|
||||||
t.Logf(" forget snapshot at %v %s", sn.Time, sn.Tags)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
goldenFilename := filepath.Join("testdata", fmt.Sprintf("policy_keep_snapshots_%d", i))
|
goldenFilename := filepath.Join("testdata", fmt.Sprintf("policy_keep_snapshots_%d", i))
|
||||||
|
|
||||||
if *updateGoldenFiles {
|
if *updateGoldenFiles {
|
||||||
buf, err := json.MarshalIndent(keep, "", " ")
|
saveGoldenFile(t, goldenFilename, keep, reasons)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error marshaling result: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = ioutil.WriteFile(goldenFilename, buf, 0644); err != nil {
|
|
||||||
t.Fatalf("unable to update golden file: %v", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buf, err := ioutil.ReadFile(goldenFilename)
|
want := loadGoldenFile(t, goldenFilename)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error loading golden file %v: %v", goldenFilename, err)
|
cmpOpts := cmpopts.IgnoreUnexported(restic.Snapshot{})
|
||||||
|
|
||||||
|
if !cmp.Equal(want.Keep, keep, cmpOpts) {
|
||||||
|
t.Error(cmp.Diff(want.Keep, keep, cmpOpts))
|
||||||
}
|
}
|
||||||
|
|
||||||
var want restic.Snapshots
|
if !cmp.Equal(want.Reasons, reasons, cmpOpts) {
|
||||||
err = json.Unmarshal(buf, &want)
|
t.Error(cmp.Diff(want.Reasons, reasons, cmpOpts))
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error unmarshalling golden file %v: %v", goldenFilename, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(keep, want) {
|
|
||||||
t.Fatalf("wrong result, want:\n %v\ngot:\n %v", want, keep)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
2363
internal/restic/testdata/policy_keep_snapshots_0
vendored
2363
internal/restic/testdata/policy_keep_snapshots_0
vendored
File diff suppressed because it is too large
Load Diff
236
internal/restic/testdata/policy_keep_snapshots_1
vendored
236
internal/restic/testdata/policy_keep_snapshots_1
vendored
@ -1,52 +1,184 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:30:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:30:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:30:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
239
internal/restic/testdata/policy_keep_snapshots_10
vendored
239
internal/restic/testdata/policy_keep_snapshots_10
vendored
@ -1,52 +1,187 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 1,
|
||||||
|
"daily": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,12 +1,40 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"weekly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,22 +1,76 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"weekly": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"weekly": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"weekly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
103
internal/restic/testdata/policy_keep_snapshots_13
vendored
103
internal/restic/testdata/policy_keep_snapshots_13
vendored
@ -1,22 +1,81 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2,
|
||||||
|
"weekly": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1,
|
||||||
|
"weekly": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"weekly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
144
internal/restic/testdata/policy_keep_snapshots_14
vendored
144
internal/restic/testdata/policy_keep_snapshots_14
vendored
@ -1,32 +1,112 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-09-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-09-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-08-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-08-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2014-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-09-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-08-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
172
internal/restic/testdata/policy_keep_snapshots_15
vendored
172
internal/restic/testdata/policy_keep_snapshots_15
vendored
@ -1,37 +1,135 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-09-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-09-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-08-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-08-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2014-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot",
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1,
|
||||||
|
"weekly": 1,
|
||||||
|
"monthly": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-09-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-08-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,17 +1,60 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2014-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"yearly": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"yearly": 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
258
internal/restic/testdata/policy_keep_snapshots_17
vendored
258
internal/restic/testdata/policy_keep_snapshots_17
vendored
@ -1,52 +1,206 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2014-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot",
|
||||||
|
"monthly snapshot",
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 6,
|
||||||
|
"weekly": 1,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot",
|
||||||
|
"weekly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 5,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 4,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 3,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1,
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 2,
|
||||||
|
"yearly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot",
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"monthly": 1,
|
||||||
|
"yearly": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"monthly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"yearly": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"yearly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"yearly": 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
569
internal/restic/testdata/policy_keep_snapshots_18
vendored
569
internal/restic/testdata/policy_keep_snapshots_18
vendored
@ -1,153 +1,416 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": [
|
"tree": null,
|
||||||
"path1",
|
"paths": [
|
||||||
"path2"
|
"path1",
|
||||||
],
|
"path2"
|
||||||
"tags": [
|
],
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-15T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-13T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-13T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-12T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-12T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-10T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-08T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-20T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-20T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-11T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-11T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-10T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-09T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-09T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-08T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-06T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-06T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-05T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-05T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-02T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-02T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-01T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-01T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
}
|
]
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-13T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-12T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-20T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-11T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-09T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-06T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-05T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-02T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-01T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
149
internal/restic/testdata/policy_keep_snapshots_19
vendored
149
internal/restic/testdata/policy_keep_snapshots_19
vendored
@ -1,41 +1,108 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": [
|
"tree": null,
|
||||||
"path1",
|
"paths": [
|
||||||
"path2"
|
"path1",
|
||||||
],
|
"path2"
|
||||||
"tags": [
|
],
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-15T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
}
|
]
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo, bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
351
internal/restic/testdata/policy_keep_snapshots_2
vendored
351
internal/restic/testdata/policy_keep_snapshots_2
vendored
@ -1,77 +1,274 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:30:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:30:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:28:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:28:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:24:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:24:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T11:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T11:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T10:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T10:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 13
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:30:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:28:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:24:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T11:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T10:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
603
internal/restic/testdata/policy_keep_snapshots_20
vendored
603
internal/restic/testdata/policy_keep_snapshots_20
vendored
@ -1,161 +1,442 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": [
|
"tree": null,
|
||||||
"path1",
|
"paths": [
|
||||||
"path2"
|
"path1",
|
||||||
],
|
"path2"
|
||||||
"tags": [
|
],
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-15T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-15T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo",
|
"tags": [
|
||||||
"bar"
|
"foo",
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-13T10:20:30.1Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-13T10:20:30.1Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"bar"
|
"tags": [
|
||||||
]
|
"bar"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-13T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-13T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-12T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-12T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-10T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-11-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-11-08T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-22T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-20T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-20T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-11T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-11T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-10T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-09T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-09T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-08T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-06T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-06T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-05T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-05T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-02T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-02T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
},
|
]
|
||||||
{
|
},
|
||||||
"time": "2014-10-01T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2014-10-01T10:20:30Z",
|
||||||
"paths": null,
|
"tree": null,
|
||||||
"tags": [
|
"paths": null,
|
||||||
"foo"
|
"tags": [
|
||||||
]
|
"foo"
|
||||||
}
|
]
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"path1",
|
||||||
|
"path2"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-15T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]",
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-13T10:20:30.1Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [bar]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-13T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-12T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-11-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-20T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-11T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-09T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-06T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-05T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-02T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2014-10-01T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null,
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"has tags [foo]"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,7 +1,22 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,7 +1,22 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 2d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,17 +1,54 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 7d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 7d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 7d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
407
internal/restic/testdata/policy_keep_snapshots_24
vendored
407
internal/restic/testdata/policy_keep_snapshots_24
vendored
@ -1,97 +1,310 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:30:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:30:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:28:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:28:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:24:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:24:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T11:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T11:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T10:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T10:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T01:03:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T01:03:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T01:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T01:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:30:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:28:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:24:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T11:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T10:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T01:03:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T01:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
407
internal/restic/testdata/policy_keep_snapshots_25
vendored
407
internal/restic/testdata/policy_keep_snapshots_25
vendored
@ -1,97 +1,310 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:30:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:30:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:28:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:28:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:24:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:24:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T11:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T11:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T10:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T10:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T01:03:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T01:03:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T01:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T01:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:30:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:28:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:24:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T11:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T10:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T01:03:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T01:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"within 1m14d"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1376
internal/restic/testdata/policy_keep_snapshots_26
vendored
1376
internal/restic/testdata/policy_keep_snapshots_26
vendored
File diff suppressed because it is too large
Load Diff
2475
internal/restic/testdata/policy_keep_snapshots_3
vendored
2475
internal/restic/testdata/policy_keep_snapshots_3
vendored
File diff suppressed because it is too large
Load Diff
2569
internal/restic/testdata/policy_keep_snapshots_4
vendored
2569
internal/restic/testdata/policy_keep_snapshots_4
vendored
File diff suppressed because it is too large
Load Diff
466
internal/restic/testdata/policy_keep_snapshots_5
vendored
466
internal/restic/testdata/policy_keep_snapshots_5
vendored
@ -1,102 +1,364 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T12:30:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T12:30:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T11:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T11:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T10:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T10:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T01:03:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T01:03:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-21T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-21T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-20T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-20T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-18T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-18T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-15T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-15T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-13T10:20:30.1Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-13T10:20:30.1Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 19
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 18
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 13
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T12:30:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T11:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T10:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T01:03:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-21T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-20T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-18T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-15T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"hourly": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-13T10:20:30.1Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"hourly snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
75
internal/restic/testdata/policy_keep_snapshots_6
vendored
75
internal/restic/testdata/policy_keep_snapshots_6
vendored
@ -1,17 +1,58 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
236
internal/restic/testdata/policy_keep_snapshots_7
vendored
236
internal/restic/testdata/policy_keep_snapshots_7
vendored
@ -1,52 +1,184 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
696
internal/restic/testdata/policy_keep_snapshots_8
vendored
696
internal/restic/testdata/policy_keep_snapshots_8
vendored
@ -1,152 +1,544 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-06T08:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-06T08:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-05T09:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-05T09:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-04T16:23:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-04T16:23:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-03T07:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-03T07:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-01T07:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-01T07:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-21T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-21T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-20T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-20T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-18T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-18T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-15T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-15T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-13T10:20:30.1Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-13T10:20:30.1Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-12T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-12T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-10T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-11-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-11-08T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-20T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-20T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-11T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-11T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-10T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-10T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-09T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-09T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-08T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-08T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-06T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-06T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-05T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-05T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-02T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-02T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-10-01T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-10-01T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2015-09-22T10:20:30Z",
|
{
|
||||||
"tree": null,
|
"time": "2015-09-22T10:20:30Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 29
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 28
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 27
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 26
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 25
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-06T08:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 24
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-05T09:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 23
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-04T16:23:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 22
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-03T07:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 21
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-01T07:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 19
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-21T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 18
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-20T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 17
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-18T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-15T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-13T10:20:30.1Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 14
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-12T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 13
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-11-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-20T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-11T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 8
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-10T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-09T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-08T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-06T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-05T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-02T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-10-01T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2015-09-22T10:20:30Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
152
internal/restic/testdata/policy_keep_snapshots_9
vendored
152
internal/restic/testdata/policy_keep_snapshots_9
vendored
@ -1,32 +1,120 @@
|
|||||||
[
|
{
|
||||||
{
|
"keep": [
|
||||||
"time": "2016-01-18T12:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-18T12:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:08:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:08:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-12T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-12T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-09T21:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-09T21:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-08T20:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-08T20:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
},
|
"paths": null
|
||||||
{
|
},
|
||||||
"time": "2016-01-07T10:02:03Z",
|
{
|
||||||
"tree": null,
|
"time": "2016-01-07T10:02:03Z",
|
||||||
"paths": null
|
"tree": null,
|
||||||
}
|
"paths": null
|
||||||
]
|
}
|
||||||
|
],
|
||||||
|
"reasons": [
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-18T12:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 4,
|
||||||
|
"daily": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:08:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 3,
|
||||||
|
"daily": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-12T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 2,
|
||||||
|
"daily": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-09T21:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"last": 1,
|
||||||
|
"daily": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-08T20:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"last snapshot",
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {
|
||||||
|
"daily": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"snapshot": {
|
||||||
|
"time": "2016-01-07T10:02:03Z",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
"matches": [
|
||||||
|
"daily snapshot"
|
||||||
|
],
|
||||||
|
"counters": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user