diff --git a/scagent/util/fsutil.go b/scagent/util/fsutil.go index 99dc010..6c6e9d2 100644 --- a/scagent/util/fsutil.go +++ b/scagent/util/fsutil.go @@ -297,10 +297,13 @@ func DecompressZip(zpFname string, dirpath string) error { if err != nil { return fmt.Errorf("failed to create file (%v)", err) } + defer dstFile.Close() + // 打开zip文件中的文件 fileInArchive, err := f.Open() if err != nil { return fmt.Errorf("failed to open file in zip (%v)", err) } + defer fileInArchive.Close() // 检查文件是否存在,存在的话先备份 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 { 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 }