Browse Source

保持原有文件时间

master
xyiege 1 month ago
parent
commit
9ea6a946c5
  1. 10
      scagent/util/fsutil.go

10
scagent/util/fsutil.go

@ -297,10 +297,13 @@ func DecompressZip(zpFname string, dirpath string) error {
if err != nil { if err != nil {
return fmt.Errorf("failed to create file (%v)", err) return fmt.Errorf("failed to create file (%v)", err)
} }
defer dstFile.Close()
// 打开zip文件中的文件
fileInArchive, err := f.Open() fileInArchive, err := f.Open()
if err != nil { if err != nil {
return fmt.Errorf("failed to open file in zip (%v)", err) return fmt.Errorf("failed to open file in zip (%v)", err)
} }
defer fileInArchive.Close()
// 检查文件是否存在,存在的话先备份 // 检查文件是否存在,存在的话先备份
if _, err := os.Stat(filePath); err == nil { if _, err := os.Stat(filePath); err == nil {
// 当前时间 // 当前时间
@ -315,8 +318,11 @@ func DecompressZip(zpFname string, dirpath string) error {
if _, err := io.Copy(dstFile, fileInArchive); err != nil { if _, err := io.Copy(dstFile, fileInArchive); err != nil {
return fmt.Errorf("failed to copy file in zip (%v)", err) return fmt.Errorf("failed to copy file in zip (%v)", err)
} }
dstFile.Close() // 保留原始文件的修改时间
fileInArchive.Close() if err := os.Chtimes(filePath, f.ModTime(), f.ModTime()); err != nil {
return fmt.Errorf("failed to set file times (%v)", err)
}
// nothing
} }
return nil return nil
} }

Loading…
Cancel
Save