mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-18 15:40:12 +01:00
🎨 改进云端同步和备份文件读写健壮性 Fix https://github.com/siyuan-note/siyuan/issues/5196
This commit is contained in:
parent
5581397aeb
commit
aefd86ce78
2 changed files with 11 additions and 21 deletions
|
|
@ -300,7 +300,7 @@ func CreateLocalBackup() (err error) {
|
||||||
util.LogErrorf("marshal backup conf.json failed: %s", err)
|
util.LogErrorf("marshal backup conf.json failed: %s", err)
|
||||||
} else {
|
} else {
|
||||||
confPath := filepath.Join(newBackupDir, "conf.json")
|
confPath := filepath.Join(newBackupDir, "conf.json")
|
||||||
if err = os.WriteFile(confPath, data, 0644); nil != err {
|
if err = gulu.File.WriteFileSafer(confPath, data, 0644); nil != err {
|
||||||
util.LogErrorf("write backup conf.json [%s] failed: %s", confPath, err)
|
util.LogErrorf("write backup conf.json [%s] failed: %s", confPath, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -438,13 +438,7 @@ func encryptDataDir(passwd string) (encryptedDataDir string, err error) {
|
||||||
return io.EOF
|
return io.EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err0 := os.Create(p)
|
data, err0 := filelock.NoLockFileRead(path)
|
||||||
if nil != err0 {
|
|
||||||
util.LogErrorf("create file [%s] failed: %s", p, err0)
|
|
||||||
err = err0
|
|
||||||
return io.EOF
|
|
||||||
}
|
|
||||||
data, err0 := os.ReadFile(path)
|
|
||||||
if nil != err0 {
|
if nil != err0 {
|
||||||
util.LogErrorf("read file [%s] failed: %s", path, err0)
|
util.LogErrorf("read file [%s] failed: %s", path, err0)
|
||||||
err = err0
|
err = err0
|
||||||
|
|
@ -456,16 +450,12 @@ func encryptDataDir(passwd string) (encryptedDataDir string, err error) {
|
||||||
err = errors.New("encrypt file failed")
|
err = errors.New("encrypt file failed")
|
||||||
return io.EOF
|
return io.EOF
|
||||||
}
|
}
|
||||||
if _, err0 = f.Write(data); nil != err0 {
|
|
||||||
|
if err0 = gulu.File.WriteFileSafer(p, data, 0644); nil != err0 {
|
||||||
util.LogErrorf("write file [%s] failed: %s", p, err0)
|
util.LogErrorf("write file [%s] failed: %s", p, err0)
|
||||||
err = err0
|
err = err0
|
||||||
return io.EOF
|
return io.EOF
|
||||||
}
|
}
|
||||||
if err0 = f.Close(); nil != err0 {
|
|
||||||
util.LogErrorf("close file [%s] failed: %s", p, err0)
|
|
||||||
err = err0
|
|
||||||
return io.EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
fi, err0 := os.Stat(path)
|
fi, err0 := os.Stat(path)
|
||||||
if nil != err0 {
|
if nil != err0 {
|
||||||
|
|
@ -590,7 +580,7 @@ func decryptDataDir(passwd string) (decryptedDataDir string, err error) {
|
||||||
err = errors.New(Conf.Language(40))
|
err = errors.New(Conf.Language(40))
|
||||||
return io.EOF
|
return io.EOF
|
||||||
}
|
}
|
||||||
if err0 = os.WriteFile(plainP, data, 0644); nil != err0 {
|
if err0 = gulu.File.WriteFileSafer(plainP, data, 0644); nil != err0 {
|
||||||
util.LogErrorf("write file [%s] failed: %s", plainP, err0)
|
util.LogErrorf("write file [%s] failed: %s", plainP, err0)
|
||||||
err = err0
|
err = err0
|
||||||
return io.EOF
|
return io.EOF
|
||||||
|
|
|
||||||
|
|
@ -654,7 +654,7 @@ func genCloudIndex(localDirPath string, excludes map[string]bool, calcHash bool)
|
||||||
util.LogErrorf("marshal sync cloud index failed: %s", err)
|
util.LogErrorf("marshal sync cloud index failed: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = os.WriteFile(filepath.Join(localDirPath, "index.json"), data, 0644); nil != err {
|
if err = gulu.File.WriteFileSafer(filepath.Join(localDirPath, "index.json"), data, 0644); nil != err {
|
||||||
util.LogErrorf("write sync cloud index failed: %s", err)
|
util.LogErrorf("write sync cloud index failed: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -748,7 +748,7 @@ func recoverSyncData(metaPath, indexPath string, modified map[string]bool) (decr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err0 = os.WriteFile(plainP, data, 0644); nil != err0 {
|
if err0 = gulu.File.WriteFileSafer(plainP, data, 0644); nil != err0 {
|
||||||
util.LogErrorf("write file [%s] failed: %s", plainP, err0)
|
util.LogErrorf("write file [%s] failed: %s", plainP, err0)
|
||||||
err = err0
|
err = err0
|
||||||
return io.EOF
|
return io.EOF
|
||||||
|
|
@ -836,7 +836,7 @@ func prepareSyncData(passwd string, unchangedDataList map[string]bool) (encrypte
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err0 = os.WriteFile(p, data, 0644)
|
err0 = gulu.File.WriteFileSafer(p, data, 0644)
|
||||||
if nil != err0 {
|
if nil != err0 {
|
||||||
util.LogErrorf("write file [%s] failed: %s", p, err0)
|
util.LogErrorf("write file [%s] failed: %s", p, err0)
|
||||||
err = err0
|
err = err0
|
||||||
|
|
@ -895,7 +895,7 @@ func prepareSyncData(passwd string, unchangedDataList map[string]bool) (encrypte
|
||||||
util.LogErrorf("encrypt file failed: %s", err)
|
util.LogErrorf("encrypt file failed: %s", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err = os.WriteFile(filepath.Join(encryptedDataDir, pathJSON), data, 0644); nil != err {
|
if err = gulu.File.WriteFileSafer(filepath.Join(encryptedDataDir, pathJSON), data, 0644); nil != err {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
@ -1107,7 +1107,7 @@ func incLocalSyncVer() {
|
||||||
conf.SyncVer++
|
conf.SyncVer++
|
||||||
data, _ := gulu.JSON.MarshalIndentJSON(conf, "", " ")
|
data, _ := gulu.JSON.MarshalIndentJSON(conf, "", " ")
|
||||||
confPath := filepath.Join(Conf.Sync.GetSaveDir(), ".siyuan", "conf.json")
|
confPath := filepath.Join(Conf.Sync.GetSaveDir(), ".siyuan", "conf.json")
|
||||||
if err = os.WriteFile(confPath, data, 0644); nil != err {
|
if err = gulu.File.WriteFileSafer(confPath, data, 0644); nil != err {
|
||||||
util.LogErrorf("save sync conf [%s] failed: %s", confPath, err)
|
util.LogErrorf("save sync conf [%s] failed: %s", confPath, err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
@ -1259,7 +1259,7 @@ func getSyncIgnoreList() (ret *hashset.Set) {
|
||||||
ignore := filepath.Join(util.DataDir, ".siyuan", "syncignore")
|
ignore := filepath.Join(util.DataDir, ".siyuan", "syncignore")
|
||||||
os.MkdirAll(filepath.Dir(ignore), 0755)
|
os.MkdirAll(filepath.Dir(ignore), 0755)
|
||||||
if !gulu.File.IsExist(ignore) {
|
if !gulu.File.IsExist(ignore) {
|
||||||
if err := os.WriteFile(ignore, nil, 0644); nil != err {
|
if err := gulu.File.WriteFileSafer(ignore, nil, 0644); nil != err {
|
||||||
util.LogErrorf("create syncignore [%s] failed: %s", ignore, err)
|
util.LogErrorf("create syncignore [%s] failed: %s", ignore, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue