From 7534b680a792db920774d452818fb2fe2ef77fad Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Wed, 7 May 2025 08:03:28 +0800 Subject: [PATCH] fix: Fix the problem of snapshot synchronization failure (#8559) --- agent/app/service/backup.go | 2 +- agent/app/service/backup_record.go | 10 +++++++++- agent/app/service/snapshot.go | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/agent/app/service/backup.go b/agent/app/service/backup.go index 80594071f..2a6e20a60 100644 --- a/agent/app/service/backup.go +++ b/agent/app/service/backup.go @@ -124,7 +124,7 @@ func (u *BackupService) Create(req dto.BackupOperate) error { if req.Type == constant.Local { return buserr.New("ErrBackupLocalCreate") } - if req.Type != constant.Sftp && req.BackupPath != "/" { + if req.Type != constant.Sftp { req.BackupPath = strings.TrimPrefix(req.BackupPath, "/") } backup, _ := backupRepo.Get(repo.WithByName(req.Name)) diff --git a/agent/app/service/backup_record.go b/agent/app/service/backup_record.go index 20f46195f..d4bae5cad 100644 --- a/agent/app/service/backup_record.go +++ b/agent/app/service/backup_record.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "path" + "strings" "sync" "github.com/1Panel-dev/1Panel/agent/app/dto" @@ -190,7 +191,14 @@ func (u *BackupRecordService) ListFiles(req dto.OperateByID) []string { global.LOG.Debugf("load files failed, err: %v", err) return []string{} } - return files + var datas []string + for _, file := range files { + fileName := path.Base(file) + if len(file) != 0 && (strings.HasPrefix(fileName, "1panel-v2.") || strings.HasPrefix(fileName, "snapshot-1panel-v2.")) { + datas = append(datas, path.Base(file)) + } + } + return datas } type backupSizeHelper struct { diff --git a/agent/app/service/snapshot.go b/agent/app/service/snapshot.go index af5bc5fb0..eb39a93bf 100644 --- a/agent/app/service/snapshot.go +++ b/agent/app/service/snapshot.go @@ -65,7 +65,11 @@ func (u *SnapshotService) SnapshotImport(req dto.SnapshotImport) error { if len(req.Names) == 0 { return fmt.Errorf("incorrect snapshot request body: %v", req.Names) } + for _, snapName := range req.Names { + if !strings.HasPrefix(snapName, "1panel-v2.") && !strings.HasPrefix(snapName, "snapshot-1panel-v2.") { + return fmt.Errorf("incorrect snapshot name format of %s", snapName) + } snap, _ := snapshotRepo.Get(repo.WithByName(strings.ReplaceAll(snapName, ".tar.gz", ""))) if snap.ID != 0 { return buserr.New("ErrRecordExist")