Introduce UserID, GroupID for snapshot

Use the fields UID and GID for Unix user and group ID, and the fields
UserID and GroupID for Windows user and group strings.
This commit is contained in:
Alexander Neumann 2015-02-03 22:04:09 +01:00
parent d1fee28ae5
commit bb777d9a58
4 changed files with 77 additions and 16 deletions

View File

@ -3,9 +3,7 @@ package restic
import (
"fmt"
"os"
"os/user"
"path/filepath"
"strconv"
"time"
"github.com/restic/restic/backend"
@ -20,6 +18,8 @@ type Snapshot struct {
Username string `json:"username,omitempty"`
UID uint32 `json:"uid,omitempty"`
GID uint32 `json:"gid,omitempty"`
UserID string `json:"userid,omitempty"`
GroupID string `json:"groupid,omitempty"`
id backend.ID // plaintext ID, used during restore
}
@ -40,20 +40,9 @@ func NewSnapshot(dir string) (*Snapshot, error) {
sn.Hostname = hn
}
usr, err := user.Current()
if err == nil {
sn.Username = usr.Username
uid, err := strconv.ParseInt(usr.Uid, 10, 32)
if err != nil {
return nil, err
}
sn.UID = uint32(uid)
gid, err := strconv.ParseInt(usr.Gid, 10, 32)
if err != nil {
return nil, err
}
sn.GID = uint32(gid)
err = sn.fillUserInfo()
if err != nil {
return nil, err
}
return sn, nil

28
snapshot_darwin.go Normal file
View File

@ -0,0 +1,28 @@
package restic
import (
"os/user"
"strconv"
)
func (sn *Snapshot) fillUserInfo() error {
usr, err := user.Current()
if err != nil {
return err
}
sn.Username = usr.Username
uid, err := strconv.ParseInt(usr.Uid, 10, 32)
if err != nil {
return err
}
sn.UID = uint32(uid)
gid, err := strconv.ParseInt(usr.Gid, 10, 32)
if err != nil {
return err
}
sn.GID = uint32(gid)
return nil
}

28
snapshot_linux.go Normal file
View File

@ -0,0 +1,28 @@
package restic
import (
"os/user"
"strconv"
)
func (sn *Snapshot) fillUserInfo() error {
usr, err := user.Current()
if err != nil {
return err
}
sn.Username = usr.Username
uid, err := strconv.ParseInt(usr.Uid, 10, 32)
if err != nil {
return err
}
sn.UID = uint32(uid)
gid, err := strconv.ParseInt(usr.Gid, 10, 32)
if err != nil {
return err
}
sn.GID = uint32(gid)
return nil
}

16
snapshot_windows.go Normal file
View File

@ -0,0 +1,16 @@
package restic
import "os/user"
func (sn *Snapshot) fillUserInfo() error {
usr, err := user.Current()
if err != nil {
return err
}
sn.Username = usr.Username
sn.UserID = usr.Uid
sn.GroupID = usr.Gid
return nil
}