diff --git a/src/cmds/restic/cmd_backup.go b/src/cmds/restic/cmd_backup.go index 9622b15da..3f532464d 100644 --- a/src/cmds/restic/cmd_backup.go +++ b/src/cmds/restic/cmd_backup.go @@ -354,7 +354,13 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error { // Find last snapshot to set it as parent, if not already set if !opts.Force && parentSnapshotID == nil { - id, err := restic.FindLatestSnapshot(repo, target, "") + hostname, err := os.Hostname() + if err != nil { + debug.Log("os.Hostname() returned err: %v", err) + hostname = "" + } + + id, err := restic.FindLatestSnapshot(repo, target, hostname) if err == nil { parentSnapshotID = &id } else if err != restic.ErrNoSnapshotFound { diff --git a/src/restic/snapshot.go b/src/restic/snapshot.go index 3bc0c8732..2320fd988 100644 --- a/src/restic/snapshot.go +++ b/src/restic/snapshot.go @@ -145,8 +145,8 @@ func SamePaths(expected, actual []string) bool { // ErrNoSnapshotFound is returned when no snapshot for the given criteria could be found. var ErrNoSnapshotFound = errors.New("no snapshot found") -// FindLatestSnapshot finds latest snapshot with optional target/directory and source filters -func FindLatestSnapshot(repo Repository, targets []string, source string) (ID, error) { +// FindLatestSnapshot finds latest snapshot with optional target/directory and hostname filters. +func FindLatestSnapshot(repo Repository, targets []string, hostname string) (ID, error) { var ( latest time.Time latestID ID @@ -158,7 +158,7 @@ func FindLatestSnapshot(repo Repository, targets []string, source string) (ID, e if err != nil { return ID{}, errors.Errorf("Error listing snapshot: %v", err) } - if snapshot.Time.After(latest) && SamePaths(snapshot.Paths, targets) && (source == "" || source == snapshot.Hostname) { + if snapshot.Time.After(latest) && SamePaths(snapshot.Paths, targets) && (hostname == "" || hostname == snapshot.Hostname) { latest = snapshot.Time latestID = snapshotID found = true