🐛 备份还原时间保持不变

This commit is contained in:
Liang Ding 2022-06-06 01:02:17 +08:00
parent 48b7364331
commit cc8e9bc25f
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -526,13 +526,20 @@ func decryptDataDir(passwd string) (decryptedDataDir string, err error) {
if nil != err { if nil != err {
return "", errors.New(Conf.Language(40)) return "", errors.New(Conf.Language(40))
} }
metaJSON := map[string]string{} metaJSON := map[string]string{}
if err = gulu.JSON.UnmarshalJSON(data, &metaJSON); nil != err { if err = gulu.JSON.UnmarshalJSON(data, &metaJSON); nil != err {
return return
} }
modTimes := map[string]time.Time{} index := map[string]*CloudIndex{}
data, err = os.ReadFile(filepath.Join(backupDir, "index.json"))
if nil != err {
return
}
if err = gulu.JSON.UnmarshalJSON(data, &index); nil != err {
return
}
err = filepath.Walk(backupDir, func(path string, info fs.FileInfo, _ error) error { err = filepath.Walk(backupDir, func(path string, info fs.FileInfo, _ error) error {
if backupDir == path || pathJSON == info.Name() || strings.HasSuffix(info.Name(), ".json") { if backupDir == path || pathJSON == info.Name() || strings.HasSuffix(info.Name(), ".json") {
return nil return nil
@ -577,22 +584,20 @@ func decryptDataDir(passwd string) (decryptedDataDir string, err error) {
err = err0 err = err0
return io.EOF return io.EOF
} }
}
fi, err0 := os.Stat(path) var modTime int64
if nil != err0 { idx := index["/"+encryptedP]
util.LogErrorf("stat file [%s] failed: %s", path, err0) if nil == idx {
err = err0 util.LogErrorf("index file [%s] not found", encryptedP)
return io.EOF modTime = info.ModTime().Unix()
} else {
modTime = idx.Updated
}
if err0 = os.Chtimes(plainP, time.Unix(modTime, 0), time.Unix(modTime, 0)); nil != err0 {
util.LogErrorf("change file [%s] time failed: %s", plainP, err0)
}
} }
modTimes[plainP] = fi.ModTime()
return nil return nil
}) })
for plainP, modTime := range modTimes {
if err = os.Chtimes(plainP, modTime, modTime); nil != err {
return
}
}
return return
} }