forked from TrueCloudLab/restic
Add functions to filter snapshots
This commit is contained in:
parent
bb84d351f1
commit
6cf4b81558
26 changed files with 3080 additions and 1 deletions
|
@ -83,7 +83,8 @@ func LoadAllSnapshots(repo *repository.Repository) (snapshots []*Snapshot, err e
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sn Snapshot) String() string {
|
func (sn Snapshot) String() string {
|
||||||
return fmt.Sprintf("<Snapshot %s of %v at %s>", sn.id.Str(), sn.Paths, sn.Time)
|
return fmt.Sprintf("<Snapshot %s of %v at %s by %s@%s>",
|
||||||
|
sn.id.Str(), sn.Paths, sn.Time, sn.Username, sn.Hostname)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ID retuns the snapshot's ID.
|
// ID retuns the snapshot's ID.
|
||||||
|
|
195
src/restic/snapshot_filter.go
Normal file
195
src/restic/snapshot_filter.go
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
package restic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"sort"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Snapshots is a list of snapshots.
|
||||||
|
type Snapshots []*Snapshot
|
||||||
|
|
||||||
|
// Len returns the number of snapshots in sn.
|
||||||
|
func (sn Snapshots) Len() int {
|
||||||
|
return len(sn)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Less returns true iff the ith snapshot has been made after the jth.
|
||||||
|
func (sn Snapshots) Less(i, j int) bool {
|
||||||
|
return sn[i].Time.After(sn[j].Time)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Swap exchanges the two snapshots.
|
||||||
|
func (sn Snapshots) Swap(i, j int) {
|
||||||
|
sn[i], sn[j] = sn[j], sn[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnapshotFilter configures criteria for filtering snapshots before an
|
||||||
|
// ExpirePolicy can be applied.
|
||||||
|
type SnapshotFilter struct {
|
||||||
|
Hostname string
|
||||||
|
Username string
|
||||||
|
Paths []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// FilterSnapshots returns the snapshots from s which match the filter f.
|
||||||
|
func FilterSnapshots(s Snapshots, f SnapshotFilter) (result Snapshots) {
|
||||||
|
for _, snap := range s {
|
||||||
|
if f.Hostname != "" && f.Hostname != snap.Hostname {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.Username != "" && f.Username != snap.Username {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.Paths != nil && !reflect.DeepEqual(f.Paths, snap.Paths) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
result = append(result, snap)
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExpirePolicy configures which snapshots should be automatically removed.
|
||||||
|
type ExpirePolicy struct {
|
||||||
|
Last int // keep the last n snapshots
|
||||||
|
Daily int // keep the last n daily snapshots
|
||||||
|
Weekly int // keep the last n weekly snapshots
|
||||||
|
Monthly int // keep the last n monthly snapshots
|
||||||
|
Yearly int // keep the last n yearly snapshots
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sum returns the maximum number of snapshots to be kept according to this
|
||||||
|
// policy.
|
||||||
|
func (e ExpirePolicy) Sum() int {
|
||||||
|
return e.Last + e.Daily + e.Weekly + e.Monthly + e.Yearly
|
||||||
|
}
|
||||||
|
|
||||||
|
// filter is used to split a list of snapshots into those to keep and those to
|
||||||
|
// remove according to a policy.
|
||||||
|
type filter struct {
|
||||||
|
Unprocessed Snapshots
|
||||||
|
Remove Snapshots
|
||||||
|
Keep Snapshots
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f filter) String() string {
|
||||||
|
return fmt.Sprintf("<filter %d todo, %d keep, %d remove>", len(f.Unprocessed), len(f.Keep), len(f.Remove))
|
||||||
|
}
|
||||||
|
|
||||||
|
// ymd returns an integer in the form YYYYMMDD.
|
||||||
|
func ymd(d time.Time) int {
|
||||||
|
return d.Year()*10000 + int(d.Month())*100 + d.Day()
|
||||||
|
}
|
||||||
|
|
||||||
|
// yw returns an integer in the form YYYYWW, where WW is the week number.
|
||||||
|
func yw(d time.Time) int {
|
||||||
|
year, week := d.ISOWeek()
|
||||||
|
return year*100 + week
|
||||||
|
}
|
||||||
|
|
||||||
|
// ym returns an integer in the form YYYYMM.
|
||||||
|
func ym(d time.Time) int {
|
||||||
|
return d.Year()*100 + int(d.Month())
|
||||||
|
}
|
||||||
|
|
||||||
|
// y returns the year of d.
|
||||||
|
func y(d time.Time) int {
|
||||||
|
return d.Year()
|
||||||
|
}
|
||||||
|
|
||||||
|
// apply moves snapshots from Unprocess to either Keep or Remove. It sorts the
|
||||||
|
// snapshots into buckets according to the return of fn, and then moves the
|
||||||
|
// newest snapshot in each bucket to Keep and all others to Remove. When max
|
||||||
|
// snapshots were found, processing stops.
|
||||||
|
func (f *filter) apply(fn func(time.Time) int, max int) {
|
||||||
|
if max == 0 || len(f.Unprocessed) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sameDay := Snapshots{}
|
||||||
|
lastDay := fn(f.Unprocessed[0].Time)
|
||||||
|
|
||||||
|
for len(f.Unprocessed) > 0 {
|
||||||
|
cur := f.Unprocessed[0]
|
||||||
|
|
||||||
|
day := fn(cur.Time)
|
||||||
|
|
||||||
|
// if the snapshots are from a new day, forget all but the first (=last
|
||||||
|
// in time) snapshot from the previous day.
|
||||||
|
if day != lastDay {
|
||||||
|
f.Keep = append(f.Keep, sameDay[0])
|
||||||
|
for _, snapshot := range sameDay[1:] {
|
||||||
|
f.Remove = append(f.Remove, snapshot)
|
||||||
|
}
|
||||||
|
|
||||||
|
sameDay = Snapshots{}
|
||||||
|
lastDay = day
|
||||||
|
max--
|
||||||
|
|
||||||
|
if max == 0 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// collect all snapshots for the current day
|
||||||
|
sameDay = append(sameDay, cur)
|
||||||
|
f.Unprocessed = f.Unprocessed[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(sameDay) > 0 {
|
||||||
|
f.Keep = append(f.Keep, sameDay[0])
|
||||||
|
for _, snapshot := range sameDay[1:] {
|
||||||
|
f.Remove = append(f.Remove, snapshot)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// keepLast marks the last n snapshots as to be kept.
|
||||||
|
func (f *filter) keepLast(n int) {
|
||||||
|
if n > len(f.Unprocessed) {
|
||||||
|
n = len(f.Unprocessed)
|
||||||
|
}
|
||||||
|
|
||||||
|
f.Keep = append(f.Keep, f.Unprocessed[:n]...)
|
||||||
|
f.Unprocessed = f.Unprocessed[n:]
|
||||||
|
}
|
||||||
|
|
||||||
|
// finish moves all remaining snapshots to remove.
|
||||||
|
func (f *filter) finish() {
|
||||||
|
f.Remove = append(f.Remove, f.Unprocessed...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplyPolicy runs returns the snapshots from s that are to be deleted according
|
||||||
|
// to the policy p. s is sorted in the process.
|
||||||
|
func ApplyPolicy(list Snapshots, p ExpirePolicy) (keep, remove Snapshots) {
|
||||||
|
sort.Sort(list)
|
||||||
|
|
||||||
|
empty := ExpirePolicy{}
|
||||||
|
if p == empty {
|
||||||
|
return list, remove
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(list) == 0 {
|
||||||
|
return list, remove
|
||||||
|
}
|
||||||
|
|
||||||
|
f := filter{
|
||||||
|
Unprocessed: list,
|
||||||
|
Remove: Snapshots{},
|
||||||
|
Keep: Snapshots{},
|
||||||
|
}
|
||||||
|
|
||||||
|
f.keepLast(p.Last)
|
||||||
|
f.apply(ymd, p.Daily)
|
||||||
|
f.apply(yw, p.Weekly)
|
||||||
|
f.apply(ym, p.Monthly)
|
||||||
|
f.apply(y, p.Yearly)
|
||||||
|
f.finish()
|
||||||
|
|
||||||
|
return f.Keep, f.Remove
|
||||||
|
}
|
262
src/restic/snapshot_filter_test.go
Normal file
262
src/restic/snapshot_filter_test.go
Normal file
|
@ -0,0 +1,262 @@
|
||||||
|
package restic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"path/filepath"
|
||||||
|
"reflect"
|
||||||
|
"sort"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func parseTime(s string) time.Time {
|
||||||
|
t, err := time.Parse("2006-01-02 15:04:05 -0700", s)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return t.Local()
|
||||||
|
}
|
||||||
|
|
||||||
|
var testFilterSnapshots = Snapshots{
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-01 01:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "bar", Username: "testuser", Time: parseTime("2016-01-01 01:03:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-03 07:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "bar", Username: "testuser", Time: parseTime("2016-01-01 07:08:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 10:23:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 11:23:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 12:23:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 12:24:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 12:28:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 12:30:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-04 16:23:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-05 09:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-06 08:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-07 10:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "root", Time: parseTime("2016-01-08 20:02:03 +0100"), Paths: []string{"/usr", "/sbin"}},
|
||||||
|
{Hostname: "foo", Username: "root", Time: parseTime("2016-01-09 21:02:03 +0100"), Paths: []string{"/usr", "/sbin"}},
|
||||||
|
{Hostname: "bar", Username: "root", Time: parseTime("2016-01-12 21:02:03 +0100"), Paths: []string{"/usr", "/sbin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-12 21:08:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "testuser", Time: parseTime("2016-01-18 12:02:03 +0100"), Paths: []string{"/usr", "/bin"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
var filterTests = []SnapshotFilter{
|
||||||
|
{Hostname: "foo"},
|
||||||
|
{Username: "root"},
|
||||||
|
{Hostname: "foo", Username: "root"},
|
||||||
|
{Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "bar", Paths: []string{"/usr", "/bin"}},
|
||||||
|
{Hostname: "foo", Username: "root", Paths: []string{"/usr", "/sbin"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFilterSnapshots(t *testing.T) {
|
||||||
|
sort.Sort(testFilterSnapshots)
|
||||||
|
|
||||||
|
for i, f := range filterTests {
|
||||||
|
res := FilterSnapshots(testFilterSnapshots, f)
|
||||||
|
|
||||||
|
goldenFilename := filepath.Join("testdata", fmt.Sprintf("filter_snapshots_%d", i))
|
||||||
|
|
||||||
|
if *updateGoldenFiles {
|
||||||
|
buf, err := json.MarshalIndent(res, "", " ")
|
||||||
|
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)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("error loading golden file %v: %v", goldenFilename, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var want Snapshots
|
||||||
|
err = json.Unmarshal(buf, &want)
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(res, want) {
|
||||||
|
t.Errorf("test %v: wrong result, want:\n %#v\ngot:\n %#v", i, want, res)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var testExpireSnapshots = Snapshots{
|
||||||
|
{Time: parseTime("2014-09-01 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-02 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-05 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-06 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-09 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-11 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-09-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-12 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-15 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-18 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-21 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-08-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-01 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-02 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-05 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-06 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-09 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-11 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-10-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-12 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-15 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-18 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-21 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2014-11-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-01 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-02 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-05 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-06 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-09 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-11 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-09-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-12 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-15 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-18 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-21 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-08-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-01 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-02 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-05 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-06 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-09 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-11 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-10-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-08 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-10 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-12 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-13 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-15 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-18 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-20 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-21 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2015-11-22 10:20:30 +0100")},
|
||||||
|
{Time: parseTime("2016-01-01 01:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-01 01:03:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-01 07:08:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-03 07:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 10:23:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 11:23:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 12:23:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 12:24:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 12:28:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 12:30:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-04 16:23:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-05 09:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-06 08:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-07 10:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-08 20:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-09 21:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-12 21:02:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-12 21:08:03 +0100")},
|
||||||
|
{Time: parseTime("2016-01-18 12:02:03 +0100")},
|
||||||
|
}
|
||||||
|
|
||||||
|
var expireTests = []ExpirePolicy{
|
||||||
|
{},
|
||||||
|
{Last: 10},
|
||||||
|
{Last: 15},
|
||||||
|
{Last: 99},
|
||||||
|
{Last: 200},
|
||||||
|
{Daily: 3},
|
||||||
|
{Daily: 10},
|
||||||
|
{Daily: 30},
|
||||||
|
{Last: 5, Daily: 5},
|
||||||
|
{Last: 2, Daily: 10},
|
||||||
|
{Weekly: 2},
|
||||||
|
{Weekly: 4},
|
||||||
|
{Daily: 3, Weekly: 4},
|
||||||
|
{Monthly: 6},
|
||||||
|
{Daily: 2, Weekly: 2, Monthly: 6},
|
||||||
|
{Yearly: 10},
|
||||||
|
{Daily: 7, Weekly: 2, Monthly: 3, Yearly: 10},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestApplyPolicy(t *testing.T) {
|
||||||
|
for i, p := range expireTests {
|
||||||
|
keep, remove := ApplyPolicy(testExpireSnapshots, p)
|
||||||
|
|
||||||
|
t.Logf("test %d: returned keep %v, remove %v (of %v) expired snapshots for policy %v",
|
||||||
|
i, len(keep), len(remove), len(testExpireSnapshots), p)
|
||||||
|
|
||||||
|
if len(keep)+len(remove) != len(testExpireSnapshots) {
|
||||||
|
t.Errorf("test %d: len(keep)+len(remove) = %d != len(testExpireSnapshots) = %d",
|
||||||
|
i, len(keep)+len(remove), len(testExpireSnapshots))
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.Sum() > 0 && len(keep) > p.Sum() {
|
||||||
|
t.Errorf("not enough snapshots removed: policy allows %v snapshots to remain, but ended up with %v",
|
||||||
|
p.Sum(), len(keep))
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sn := range keep {
|
||||||
|
t.Logf("test %d: keep snapshot at %v\n", i, sn.Time)
|
||||||
|
}
|
||||||
|
for _, sn := range remove {
|
||||||
|
t.Logf("test %d: forget snapshot at %v\n", i, sn.Time)
|
||||||
|
}
|
||||||
|
|
||||||
|
goldenFilename := filepath.Join("testdata", fmt.Sprintf("expired_snapshots_%d", i))
|
||||||
|
|
||||||
|
if *updateGoldenFiles {
|
||||||
|
buf, err := json.MarshalIndent(keep, "", " ")
|
||||||
|
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)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("error loading golden file %v: %v", goldenFilename, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var want Snapshots
|
||||||
|
err = json.Unmarshal(buf, &want)
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(keep, want) {
|
||||||
|
t.Errorf("test %v: wrong result, want:\n %v\ngot:\n %v", i, want, keep)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
497
src/restic/testdata/expired_snapshots_0
vendored
Normal file
497
src/restic/testdata/expired_snapshots_0
vendored
Normal file
|
@ -0,0 +1,497 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:03:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
52
src/restic/testdata/expired_snapshots_1
vendored
Normal file
52
src/restic/testdata/expired_snapshots_1
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
12
src/restic/testdata/expired_snapshots_10
vendored
Normal file
12
src/restic/testdata/expired_snapshots_10
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
22
src/restic/testdata/expired_snapshots_11
vendored
Normal file
22
src/restic/testdata/expired_snapshots_11
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
37
src/restic/testdata/expired_snapshots_12
vendored
Normal file
37
src/restic/testdata/expired_snapshots_12
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
32
src/restic/testdata/expired_snapshots_13
vendored
Normal file
32
src/restic/testdata/expired_snapshots_13
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
52
src/restic/testdata/expired_snapshots_14
vendored
Normal file
52
src/restic/testdata/expired_snapshots_14
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
17
src/restic/testdata/expired_snapshots_15
vendored
Normal file
17
src/restic/testdata/expired_snapshots_15
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
72
src/restic/testdata/expired_snapshots_16
vendored
Normal file
72
src/restic/testdata/expired_snapshots_16
vendored
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
77
src/restic/testdata/expired_snapshots_2
vendored
Normal file
77
src/restic/testdata/expired_snapshots_2
vendored
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
497
src/restic/testdata/expired_snapshots_3
vendored
Normal file
497
src/restic/testdata/expired_snapshots_3
vendored
Normal file
|
@ -0,0 +1,497 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:03:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
497
src/restic/testdata/expired_snapshots_4
vendored
Normal file
497
src/restic/testdata/expired_snapshots_4
vendored
Normal file
|
@ -0,0 +1,497 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:03:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-09-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-21T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-18T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-15T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-13T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-12T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2014-08-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
17
src/restic/testdata/expired_snapshots_5
vendored
Normal file
17
src/restic/testdata/expired_snapshots_5
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
52
src/restic/testdata/expired_snapshots_6
vendored
Normal file
52
src/restic/testdata/expired_snapshots_6
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
152
src/restic/testdata/expired_snapshots_7
vendored
Normal file
152
src/restic/testdata/expired_snapshots_7
vendored
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-21T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-20T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-18T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-15T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-13T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-12T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-10T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-08T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-20T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-11T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-10T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-09T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-08T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-06T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-05T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-02T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-10-01T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-09-22T11:20:30+02:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
52
src/restic/testdata/expired_snapshots_8
vendored
Normal file
52
src/restic/testdata/expired_snapshots_8
vendored
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
62
src/restic/testdata/expired_snapshots_9
vendored
Normal file
62
src/restic/testdata/expired_snapshots_9
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2015-11-22T10:20:30+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": null
|
||||||
|
}
|
||||||
|
]
|
162
src/restic/testdata/filter_snapshots_0
vendored
Normal file
162
src/restic/testdata/filter_snapshots_0
vendored
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
}
|
||||||
|
]
|
32
src/restic/testdata/filter_snapshots_1
vendored
Normal file
32
src/restic/testdata/filter_snapshots_1
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "bar",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
}
|
||||||
|
]
|
22
src/restic/testdata/filter_snapshots_2
vendored
Normal file
22
src/restic/testdata/filter_snapshots_2
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
}
|
||||||
|
]
|
162
src/restic/testdata/filter_snapshots_3
vendored
Normal file
162
src/restic/testdata/filter_snapshots_3
vendored
Normal file
|
@ -0,0 +1,162 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-18T12:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-12T21:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-07T10:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-06T08:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-05T09:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T16:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:30:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:28:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:24:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T12:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T11:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-04T10:23:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-03T07:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "bar",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:03:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "bar",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "testuser"
|
||||||
|
}
|
||||||
|
]
|
22
src/restic/testdata/filter_snapshots_4
vendored
Normal file
22
src/restic/testdata/filter_snapshots_4
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T07:08:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "bar",
|
||||||
|
"username": "testuser"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-01T01:03:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/bin"
|
||||||
|
],
|
||||||
|
"hostname": "bar",
|
||||||
|
"username": "testuser"
|
||||||
|
}
|
||||||
|
]
|
22
src/restic/testdata/filter_snapshots_5
vendored
Normal file
22
src/restic/testdata/filter_snapshots_5
vendored
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "2016-01-09T21:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "2016-01-08T20:02:03+01:00",
|
||||||
|
"tree": null,
|
||||||
|
"paths": [
|
||||||
|
"/usr",
|
||||||
|
"/sbin"
|
||||||
|
],
|
||||||
|
"hostname": "foo",
|
||||||
|
"username": "root"
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in a new issue