liuxiaolong
2019-12-20 167e086161ab2941779cc6c1fef4acbade8f29a4
bakBeforeUpgrade
2个文件已修改
34 ■■■■■ 已修改文件
extend/config/config.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/SysService.go 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/config/config.go
@@ -30,6 +30,7 @@
    SysThresholds []threshold `mapstructure: "sysThresholds"`
    PTZSpeed      int         `mapstructure: "ptzSpeed"` // 云台移动速度
    PatchPath       string `mapstructure:"patchPath"`//系统更新包路径
    BakPath         string `mapstructure:"bakPath"`//系统更新包路径
}
var Server = &server{}
service/SysService.go
@@ -152,6 +152,9 @@
//upgrade
func (sv SysService) Upgrade(identifier string,filename string) (bool,error) {
    if !bakBeforeUpgrade() {
        return false,errors.New("更新前备份失败")
    }
    configPatchPath := ""
    if config.Server.PatchPath != "" {
        configPatchPath = config.Server.PatchPath
@@ -187,6 +190,30 @@
    } else {
        return false,errors.New("升级文件已丢失,请重新上传")
    }
}
func bakBeforeUpgrade() bool {
    configBakPath := ""
    if config.Server.BakPath != "" {
        configBakPath = config.Server.BakPath
    } else {
        configBakPath = "/opt/vasystem/bak"
    }
    if util.Exists(configBakPath) {
        //只保留最新的版本
        if err := os.RemoveAll(configBakPath);err != nil {
            return false
        }
    }
    if !util.CreateDirectory(configBakPath) {
        return false
    }
    b, err := ExecCmd("cp /opt/vasystem/bin /opt/vasystem/bak")
    logger.Debug("bakBeforeUpgrade result:",string(b))
    if err != nil {
        return false
    }
    return true
}
//更新系统程序
@@ -244,4 +271,10 @@
        logger.Debug("mergeChunks result:",string(b),"cmd: ./mergeAll.sh ", chunkPath, storePath)
        return true
    }
}
func ExecCmd(cmdStr string) ([]byte,error) {
    var cmd *exec.Cmd
    cmd = exec.Command("/bin/sh", "-c",cmdStr)
    return cmd.Output()
}