diff --git a/agent/app/service/snapshot_create.go b/agent/app/service/snapshot_create.go index 5d2fd7377..5a570b6b7 100644 --- a/agent/app/service/snapshot_create.go +++ b/agent/app/service/snapshot_create.go @@ -118,11 +118,6 @@ func (u *SnapshotService) SnapshotReCreate(id uint) error { return nil } -type appInstall struct { - Name string - Path string -} - func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID, retry, timeout uint) error { rootDir := path.Join(global.Dir.TmpDir, "system", req.Name) openrestyDir, _ := settingRepo.GetValueByKey("WEBSITE_DIR") @@ -130,15 +125,6 @@ func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID, retry, t baseDir := path.Join(rootDir, "base") _ = os.MkdirAll(baseDir, os.ModePerm) - var appList []appInstall - for _, item := range req.AppData { - for _, itemApp := range item.Children { - if itemApp.Label == "appData" && itemApp.IsCheck { - appList = append(appList, appInstall{Name: item.Name, Path: path.Join(global.CONF.Base.InstallDir, "1panel/apps", item.Key, item.Name)}) - } - } - } - if timeout == 0 { timeout = 1800 } @@ -164,42 +150,14 @@ func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID, retry, t ) req.InterruptStep = "" } - - if len(req.InterruptStep) == 0 || req.InterruptStep == "SnapInstallAppImage" { + if len(req.InterruptStep) == 0 || req.InterruptStep == "SnapInstallApp" { taskItem.AddSubTaskWithAliasAndOps( - "SnapInstallAppImage", + "SnapInstallApp", func(t *task.Task) error { return snapAppImage(itemHelper, req, rootDir) }, nil, int(retry), time.Duration(timeout)*time.Second, ) req.InterruptStep = "" } - - if len(req.InterruptStep) == 0 || strings.HasPrefix(req.InterruptStep, "SnapInstallApp-") { - taskItem.AddSubTaskWithAliasAndOps( - "SnapInstallApp", - func(t *task.Task) error { - itemHelper.Task.Log("---------------------- 4 / 9 ----------------------") - itemHelper.Task.LogStart(i18n.GetMsgByKey("SnapInstallApp")) - start := false - for _, itemApp := range appList { - if !start && (req.InterruptStep == "SnapInstallApp-"+itemApp.Name || len(req.InterruptStep) == 0) { - start = true - } - if !start { - continue - } - taskItem.Log(i18n.GetMsgWithMap("SnapBackup", map[string]interface{}{"app": itemApp.Name})) - if err := itemHelper.FileOp.TarGzCompressPro(false, itemApp.Path, path.Join(rootDir, "apps", itemApp.Name+".tar.gz"), "", ""); err != nil { - return err - } - } - return nil - }, - nil, int(retry), time.Duration(timeout)*time.Second, - ) - req.InterruptStep = "" - } - if len(req.InterruptStep) == 0 || req.InterruptStep == "SnapLocalBackup" { taskItem.AddSubTaskWithAliasAndOps( "SnapLocalBackup", @@ -220,7 +178,7 @@ func handleSnapshot(req dto.SnapshotCreate, taskItem *task.Task, jobID, retry, t taskItem.AddSubTaskWithAliasAndOps( "SnapCloseDBConn", func(t *task.Task) error { - taskItem.Log("---------------------- 7 / 9 ----------------------") + taskItem.Log("---------------------- 6 / 8 ----------------------") common.CloseDB(itemHelper.snapAgentDB) common.CloseDB(itemHelper.snapCoreDB) return nil @@ -266,7 +224,7 @@ type snapHelper struct { } func loadDbConn(snap *snapHelper, targetDir string, req dto.SnapshotCreate) error { - snap.Task.Log("---------------------- 1 / 9 ----------------------") + snap.Task.Log("---------------------- 1 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapDBInfo")) pathDB := path.Join(global.Dir.DataDir, "db") @@ -327,7 +285,7 @@ func loadDbConn(snap *snapHelper, targetDir string, req dto.SnapshotCreate) erro } func snapBaseData(snap snapHelper, targetDir string) error { - snap.Task.Log("---------------------- 2 / 9 ----------------------") + snap.Task.Log("---------------------- 2 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapBaseInfo")) if global.IsMaster { @@ -386,8 +344,8 @@ func snapBaseData(snap snapHelper, targetDir string) error { } func snapAppImage(snap snapHelper, req dto.SnapshotCreate, targetDir string) error { - snap.Task.Log("---------------------- 3 / 9 ----------------------") - snap.Task.LogStart(i18n.GetMsgByKey("SnapInstallAppImage")) + snap.Task.Log("---------------------- 3 / 8 ----------------------") + snap.Task.LogStart(i18n.GetMsgByKey("SnapInstallApp")) var appInstalls []model.AppInstall _ = snap.snapAgentDB.Where("1 = 1").Find(&appInstalls).Error @@ -435,7 +393,7 @@ func snapAppImage(snap snapHelper, req dto.SnapshotCreate, targetDir string) err } func snapBackupData(snap snapHelper, req dto.SnapshotCreate, targetDir string) error { - snap.Task.Log("---------------------- 5 / 9 ----------------------") + snap.Task.Log("---------------------- 4 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapLocalBackup")) excludes := loadBackupExcludes(snap, req.BackupData) @@ -484,13 +442,19 @@ func loadAppBackupExcludes(req []dto.DataTree) []string { } func snapPanelData(snap snapHelper, req dto.SnapshotCreate, targetDir string) error { - snap.Task.Log("---------------------- 6 / 9 ----------------------") + snap.Task.Log("---------------------- 5 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapPanelData")) excludes := loadPanelExcludes(req.PanelData) + for _, item := range req.AppData { + for _, itemApp := range item.Children { + if itemApp.Label == "appData" { + excludes = append(excludes, loadPanelExcludes([]dto.DataTree{itemApp})...) + } + } + } excludes = append(excludes, "./cache") excludes = append(excludes, "./db") - excludes = append(excludes, "./apps") excludes = append(excludes, "./tmp") if !req.WithSystemLog { excludes = append(excludes, "./log/1Panel*") @@ -544,7 +508,7 @@ func loadPanelExcludes(req []dto.DataTree) []string { } func snapCompress(snap snapHelper, rootDir string, secret string) error { - snap.Task.Log("---------------------- 8 / 9 ----------------------") + snap.Task.Log("---------------------- 7 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapCompress")) tmpDir := path.Join(global.Dir.TmpDir, "system") @@ -568,7 +532,7 @@ func snapCompress(snap snapHelper, rootDir string, secret string) error { } func snapUpload(snap snapHelper, accounts string, file string) error { - snap.Task.Log("---------------------- 9 / 9 ----------------------") + snap.Task.Log("---------------------- 8 / 8 ----------------------") snap.Task.LogStart(i18n.GetMsgByKey("SnapUpload")) source := path.Join(global.Dir.TmpDir, "system", path.Base(file)) diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index 259d63f4c..a77885a13 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -333,10 +333,8 @@ SnapDeleteLoginLog: 'Delete access log' SnapDeleteMonitor: 'Delete monitoring data' SnapRemoveSystemIP: 'Remove system IP' SnapBaseInfo: 'Write 1Panel basic information' -SnapInstallAppImage: 'Backup 1Panel installed application images' SnapInstallAppImageEmpty: 'No application images selected, skipping...' SnapInstallApp: 'Backup 1Panel installed applications' -SnapBackup: 'Backup {{ .app }}' SnapDockerSave: 'Compress installed applications' SnapLocalBackup: 'Backup 1Panel local backup directory' SnapCompressBackup: 'Compress local backup directory' diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index 426015531..7184a75ba 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -333,10 +333,8 @@ SnapDeleteLoginLog: 'アクセスログを削除する' SnapDeleteMonitor: '監視データを削除する' SnapRemoveSystemIP: 'システム IP を削除します' SnapBaseInfo: '1Panel の基本情報を書き込む' -SnapInstallAppImage: '1Panelインストール済みアプリケーションイメージのバックアップ' SnapInstallAppImageEmpty: 'アプリケーションイメージが選択されていないため、スキップします...' SnapInstallApp: '1Panelインストール済みアプリケーションのバックアップ' -SnapBackup: '{{ .app }}のバックアップ' SnapDockerSave: 'インストールされたアプリケーションを圧縮する' SnapLocalBackup: '1Panel ローカル バックアップ ディレクトリをバックアップします' SnapCompressBackup: 'ローカル バックアップ ディレクトリを圧縮する' diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 47fe329ef..3382ecd45 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -333,10 +333,8 @@ SnapDeleteLoginLog: '액세스 로그 삭제' SnapDeleteMonitor: '모니터링 데이터 삭제' SnapRemoveSystemIP: '시스템 IP 제거' SnapBaseInfo: '1패널 기본 정보 쓰기' -SnapInstallAppImage: '1Panel 설치된 애플리케이션 이미지 백업' SnapInstallAppImageEmpty: '애플리케이션 이미지가 선택되지 않아 건너뜁니다...' SnapInstallApp: '1Panel 설치된 애플리케이션 백업' -SnapBackup: '{{ .app }} 백업' SnapDockerSave: '설치된 애플리케이션 압축' SnapLocalBackup: '1Panel 로컬 백업 디렉토리 백업' SnapCompressBackup: '로컬 백업 디렉토리 압축' diff --git a/agent/i18n/lang/ms.yaml b/agent/i18n/lang/ms.yaml index cb51738f8..61eb9f6bd 100644 --- a/agent/i18n/lang/ms.yaml +++ b/agent/i18n/lang/ms.yaml @@ -332,10 +332,8 @@ SnapDeleteLoginLog: 'Padam log akses' SnapDeleteMonitor: 'Padamkan data pemantauan' SnapRemoveSystemIP: 'Alih keluar IP sistem' SnapBaseInfo: 'Tulis maklumat asas 1Panel' -SnapInstallAppImage: 'Sandaran imej aplikasi terpasang 1Panel' SnapInstallAppImageEmpty: 'Tiada imej aplikasi dipilih, dilangkau...' SnapInstallApp: 'Sandaran aplikasi terpasang 1Panel' -SnapBackup: 'Sandaran {{ .app }}' SnapDockerSave: 'Mampatkan aplikasi yang dipasang' SnapLocalBackup: 'Sandaran 1Panel direktori sandaran tempatan' SnapCompressBackup: 'Mampatkan direktori sandaran tempatan' diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 7507488ed..89590725c 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -333,10 +333,8 @@ SnapDeleteLoginLog: 'Excluir log de acesso' SnapDeleteMonitor: 'Excluir dados de monitoramento' SnapRemoveSystemIP: 'Remover IP do sistema' SnapBaseInfo: 'Escreva informações básicas do 1Panel' -SnapInstallAppImage: 'Backup das imagens de aplicativos instalados do 1Panel' SnapInstallAppImageEmpty: 'Nenhuma imagem de aplicativo selecionada, pulando...' SnapInstallApp: 'Backup dos aplicativos instalados do 1Panel' -SnapBackup: 'Backup do {{ .app }}' SnapDockerSave: 'Compactar aplicativos instalados' SnapLocalBackup: 'Backup do diretório de backup local do 1Panel' SnapCompressBackup: 'Compactar diretório de backup local' diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index 1e7230a32..ac9eb51d0 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -333,10 +333,8 @@ SnapDeleteLoginLog: 'Удалить журнал доступа' SnapDeleteMonitor: 'Удалить данные мониторинга' SnapRemoveSystemIP: 'Удалить системный IP' SnapBaseInfo: 'Записать основную информацию 1Panel' -SnapInstallAppImage: 'Резервное копирование образов приложений, установленных в 1Panel' SnapInstallAppImageEmpty: 'Образы приложений не выбраны, пропускаем...' SnapInstallApp: 'Резервное копирование приложений, установленных в 1Panel' -SnapBackup: 'Резервная копия {{ .app }}' SnapDockerSave: 'Сжать установленные приложения' SnapLocalBackup: 'Резервное копирование локального каталога резервных копий 1Panel' SnapCompressBackup: 'Сжать локальный каталог резервных копий' diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index 230cff753..4152879c4 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -332,10 +332,8 @@ SnapDeleteLoginLog: '刪除存取日誌' SnapDeleteMonitor: '刪除監控資料' SnapRemoveSystemIP: '移除系統IP' SnapBaseInfo: '寫入1Panel 基本資料' -SnapInstallAppImage: '備份 1Panel 已安裝應用鏡像' SnapInstallAppImageEmpty: '當前未勾選應用鏡像,跳過...' SnapInstallApp: '備份 1Panel 已安裝應用' -SnapBackup: '備份 {{ .app }}' SnapDockerSave: '壓縮已安裝應用' SnapLocalBackup: '備份1Panel 本機備份目錄' SnapCompressBackup: '壓縮本機備份目錄' diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index d220ef128..cd8221df3 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -332,10 +332,8 @@ SnapDeleteLoginLog: "删除访问日志" SnapDeleteMonitor: "删除监控数据" SnapRemoveSystemIP: "移除系统 IP" SnapBaseInfo: "写入 1Panel 基本信息" -SnapInstallAppImage: "备份 1Panel 已安装应用镜像" SnapInstallAppImageEmpty: "当前未勾选应用镜像,跳过..." SnapInstallApp: "备份 1Panel 已安装应用" -SnapBackup: "备份 {{ .app }}" SnapDockerSave: "压缩已安装应用" SnapLocalBackup: "备份 1Panel 本地备份目录" SnapCompressBackup: "压缩本地备份目录"