diff --git a/backend/app/service/backup_redis.go b/backend/app/service/backup_redis.go
index 6dbb5134f..9461d0228 100644
--- a/backend/app/service/backup_redis.go
+++ b/backend/app/service/backup_redis.go
@@ -38,7 +38,11 @@ func (u *BackupService) RedisBackup() error {
timeNow := time.Now().Format("20060102150405")
fileName := fmt.Sprintf("%s.rdb", timeNow)
if appendonly == "yes" {
- fileName = fmt.Sprintf("%s.tar.gz", timeNow)
+ if redisInfo.Version == "6.0.16" {
+ fileName = fmt.Sprintf("%s.aof", timeNow)
+ } else {
+ fileName = fmt.Sprintf("%s.tar.gz", timeNow)
+ }
}
backupDir := fmt.Sprintf("%s/database/redis/%s", localDir, redisInfo.Name)
if err := handleRedisBackup(redisInfo, backupDir, fileName); err != nil {
@@ -90,6 +94,13 @@ func handleRedisBackup(redisInfo *repo.RootInfo, backupDir, fileName string) err
}
return nil
}
+ if strings.HasSuffix(fileName, ".aof") {
+ stdout1, err := cmd.Execf("docker cp %s:/data/appendonly.aof %s/%s", redisInfo.ContainerName, backupDir, fileName)
+ if err != nil {
+ return errors.New(string(stdout1))
+ }
+ return nil
+ }
stdout1, err1 := cmd.Execf("docker cp %s:/data/dump.rdb %s/%s", redisInfo.ContainerName, backupDir, fileName)
if err1 != nil {
@@ -108,15 +119,27 @@ func handleRedisRecover(redisInfo *repo.RootInfo, recoverFile string, isRollback
if err != nil {
return err
}
- if (appendonly == "yes" && !strings.HasSuffix(recoverFile, ".tar.gz")) || (appendonly != "yes" && !strings.HasSuffix(recoverFile, ".rdb")) {
- return buserr.New(constant.ErrTypeOfRedis)
+
+ if appendonly == "yes" {
+ if !strings.HasSuffix(recoverFile, ".tar.gz") || !strings.HasSuffix(recoverFile, ".aof") {
+ return buserr.New(constant.ErrTypeOfRedis)
+ }
+ } else {
+ if !strings.HasSuffix(recoverFile, ".rdb") {
+ return buserr.New(constant.ErrTypeOfRedis)
+ }
}
+
global.LOG.Infof("appendonly in redis conf is %s", appendonly)
isOk := false
if !isRollback {
- suffix := "tar.gz"
- if appendonly != "yes" {
- suffix = "rdb"
+ suffix := "rdb"
+ if appendonly == "yes" {
+ if redisInfo.Version == "6.0.16" {
+ suffix = "aof"
+ } else {
+ suffix = "tar.gz"
+ }
}
rollbackFile := fmt.Sprintf("%s/original/database/redis/%s_%s.%s", global.CONF.System.BaseDir, redisInfo.Name, time.Now().Format("20060102150405"), suffix)
if err := handleRedisBackup(redisInfo, path.Dir(rollbackFile), path.Base(rollbackFile)); err != nil {
@@ -140,17 +163,21 @@ func handleRedisRecover(redisInfo *repo.RootInfo, recoverFile string, isRollback
if _, err := compose.Down(composeDir + "/docker-compose.yml"); err != nil {
return err
}
- if appendonly == "yes" {
+ if appendonly == "yes" && redisInfo.Version == "7.0.5" {
redisDataDir := fmt.Sprintf("%s/%s/%s/data", constant.AppInstallDir, "redis", redisInfo.Name)
if err := handleUnTar(recoverFile, redisDataDir); err != nil {
return err
}
} else {
+ itemName := "dump.rdb"
+ if redisInfo.Version == "6.0.16" {
+ itemName = "appendonly.aof"
+ }
input, err := ioutil.ReadFile(recoverFile)
if err != nil {
return err
}
- if err = ioutil.WriteFile(composeDir+"/data/dump.rdb", input, 0640); err != nil {
+ if err = ioutil.WriteFile(composeDir+"/data/"+itemName, input, 0640); err != nil {
return err
}
}
diff --git a/backend/app/service/cronjob_helper.go b/backend/app/service/cronjob_helper.go
index d7cdf46c8..0c0042be0 100644
--- a/backend/app/service/cronjob_helper.go
+++ b/backend/app/service/cronjob_helper.go
@@ -135,7 +135,7 @@ func (u *CronjobService) HandleBackup(cronjob *model.Cronjob, startTime time.Tim
fullPath := fmt.Sprintf("%s/%s", record.FileDir, fileName)
if backup.Type == "LOCAL" {
- u.HandleRmExpired(backup.Type, record.FileDir, cronjob, nil)
+ u.HandleRmExpired(backup.Type, backupDir, cronjob, nil)
return fullPath, nil
}
diff --git a/backend/app/service/docker.go b/backend/app/service/docker.go
index f984097b5..4fd1fd7c2 100644
--- a/backend/app/service/docker.go
+++ b/backend/app/service/docker.go
@@ -40,10 +40,10 @@ type daemonJsonItem struct {
func (u *DockerService) LoadDockerStatus() string {
status := constant.StatusRunning
- // stdout, err := cmd.Exec("systemctl is-active docker")
- // if string(stdout) != "active\n" || err != nil {
- // status = constant.Stopped
- // }
+ stdout, err := cmd.Exec("systemctl is-active docker")
+ if string(stdout) != "active\n" || err != nil {
+ status = constant.Stopped
+ }
return status
}
diff --git a/frontend/src/views/container/network/create/index.vue b/frontend/src/views/container/network/create/index.vue
index a27849a33..d59f34583 100644
--- a/frontend/src/views/container/network/create/index.vue
+++ b/frontend/src/views/container/network/create/index.vue
@@ -92,7 +92,7 @@ const handleClose = () => {
};
const rules = reactive({
- name: [Rules.requiredInput, Rules.name],
+ name: [Rules.requiredInput, Rules.imageName],
driver: [Rules.requiredSelect],
});
diff --git a/frontend/src/views/cronjob/record/index.vue b/frontend/src/views/cronjob/record/index.vue
index d77fe111e..d018d8e0d 100644
--- a/frontend/src/views/cronjob/record/index.vue
+++ b/frontend/src/views/cronjob/record/index.vue
@@ -134,7 +134,7 @@
{{ dialogData.rowData!.targetDir }}