|
|
@ -14,6 +14,7 @@ import ( |
|
|
"path/filepath" |
|
|
"path/filepath" |
|
|
"scagent/config" |
|
|
"scagent/config" |
|
|
"strings" |
|
|
"strings" |
|
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
"github.com/schollz/progressbar/v3" |
|
|
"github.com/schollz/progressbar/v3" |
|
|
"go.uber.org/zap" |
|
|
"go.uber.org/zap" |
|
|
@ -287,6 +288,17 @@ func DecompressZip(zpFname string, dirpath string) error { |
|
|
os.MkdirAll(filePath, os.ModePerm) |
|
|
os.MkdirAll(filePath, os.ModePerm) |
|
|
continue |
|
|
continue |
|
|
} |
|
|
} |
|
|
|
|
|
// 文件存在先备份再覆盖
|
|
|
|
|
|
if _, err := os.Stat(filePath); err == nil { |
|
|
|
|
|
// 当前时间
|
|
|
|
|
|
currentTime := time.Now().Format("20060102_150405") |
|
|
|
|
|
// 备份文件
|
|
|
|
|
|
backupPath := filePath + currentTime + "_bak" |
|
|
|
|
|
if err := os.Rename(filePath, backupPath); err != nil { |
|
|
|
|
|
return fmt.Errorf("failed to backup file (%v)", err) |
|
|
|
|
|
} |
|
|
|
|
|
continue |
|
|
|
|
|
} |
|
|
// 父文件夹开始创建目录
|
|
|
// 父文件夹开始创建目录
|
|
|
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { |
|
|
if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil { |
|
|
return fmt.Errorf("failed to make directory (%v)", err) |
|
|
return fmt.Errorf("failed to make directory (%v)", err) |
|
|
@ -385,6 +397,10 @@ func CompressToZip(dest string, currentPath string, paths []string) error { |
|
|
return err |
|
|
return err |
|
|
} |
|
|
} |
|
|
defer f.Close() |
|
|
defer f.Close() |
|
|
|
|
|
// 保留文件的原有的时间
|
|
|
|
|
|
header.Modified = info.ModTime() |
|
|
|
|
|
// 保留文件的原有的权限
|
|
|
|
|
|
header.SetMode(info.Mode()) |
|
|
_, err = io.Copy(headerWriter, f) |
|
|
_, err = io.Copy(headerWriter, f) |
|
|
return err |
|
|
return err |
|
|
}) |
|
|
}) |
|
|
@ -416,3 +432,8 @@ func ReadConfig() { |
|
|
} |
|
|
} |
|
|
config.G.Port = fmt.Sprintf("%d", iport) |
|
|
config.G.Port = fmt.Sprintf("%d", iport) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 删除文件
|
|
|
|
|
|
func DeleteFile(filePath string) error { |
|
|
|
|
|
return os.Remove(filePath) |
|
|
|
|
|
} |
|
|
|