From 49d42061be73572f960ac5b2c36dd9282a9dcc17 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:43:25 +0800 Subject: [PATCH] fix: Fix the problem that the snapshot file download path is incorrect (#8216) --- agent/app/service/backup.go | 2 +- agent/app/service/snapshot_recover.go | 10 +++--- agent/init/hook/hook.go | 5 ++- core/app/service/backup.go | 2 +- frontend/src/lang/modules/en.ts | 1 + frontend/src/lang/modules/ja.ts | 35 +++++++++++++++++++ frontend/src/lang/modules/ko.ts | 35 +++++++++++++++++++ frontend/src/lang/modules/ms.ts | 35 +++++++++++++++++++ frontend/src/lang/modules/pt-br.ts | 35 +++++++++++++++++++ frontend/src/lang/modules/ru.ts | 35 +++++++++++++++++++ frontend/src/lang/modules/zh-Hant.ts | 1 + frontend/src/lang/modules/zh.ts | 1 + .../src/views/container/dashboard/index.vue | 2 +- .../src/views/container/setting/index.vue | 6 ++-- 14 files changed, 194 insertions(+), 11 deletions(-) diff --git a/agent/app/service/backup.go b/agent/app/service/backup.go index 62364831f..4f5200786 100644 --- a/agent/app/service/backup.go +++ b/agent/app/service/backup.go @@ -342,7 +342,7 @@ func (u *BackupService) checkBackupConn(backup *model.BackupAccount) (bool, erro if _, err := client.Upload(fileItem, targetPath); err != nil { return false, err } - _, _ = client.Delete(path.Join(backup.BackupPath, "test")) + _, _ = client.Delete(path.Join(backup.BackupPath, "test/1panel")) return true, nil } diff --git a/agent/app/service/snapshot_recover.go b/agent/app/service/snapshot_recover.go index 77087659b..f7a1afc3f 100644 --- a/agent/app/service/snapshot_recover.go +++ b/agent/app/service/snapshot_recover.go @@ -191,13 +191,15 @@ func handleDownloadSnapshot(itemHelper *snapRecoverHelper, snap model.Snapshot, account, client, err := NewBackupClientWithID(snap.DownloadAccountID) itemHelper.Task.LogWithStatus(i18n.GetWithName("RecoverDownloadAccount", fmt.Sprintf("%s - %s", account.Type, account.Name)), err) - pathItem := account.BackupPath - if account.BackupPath != "/" { - pathItem = strings.TrimPrefix(account.BackupPath, "/") + targetPath := "" + if len(account.BackupPath) != 0 { + targetPath = path.Join(account.BackupPath, fmt.Sprintf("system_snapshot/%s.tar.gz", snap.Name)) + } else { + targetPath = fmt.Sprintf("system_snapshot/%s.tar.gz", snap.Name) } filePath := fmt.Sprintf("%s/%s.tar.gz", targetDir, snap.Name) _ = os.RemoveAll(filePath) - _, err = client.Download(path.Join(pathItem, fmt.Sprintf("system_snapshot/%s.tar.gz", snap.Name)), filePath) + _, err = client.Download(targetPath, filePath) itemHelper.Task.LogWithStatus(i18n.GetMsgByKey("Download"), err) return err } diff --git a/agent/init/hook/hook.go b/agent/init/hook/hook.go index b7ef20f22..fe339440a 100644 --- a/agent/init/hook/hook.go +++ b/agent/init/hook/hook.go @@ -28,7 +28,10 @@ func initGlobalData() { if err := settingRepo.Update("SystemStatus", "Free"); err != nil { global.LOG.Fatalf("init service before start failed, err: %v", err) } - _, _ = xpack.LoadNodeInfo(false) + node, _ := xpack.LoadNodeInfo(false) + if len(node.Version) != 0 { + _ = settingRepo.Update("SystemVersion", node.Version) + } global.CONF.Base.EncryptKey, _ = settingRepo.GetValueByKey("EncryptKey") } diff --git a/core/app/service/backup.go b/core/app/service/backup.go index aa3ab9952..6b5875348 100644 --- a/core/app/service/backup.go +++ b/core/app/service/backup.go @@ -362,7 +362,7 @@ func (u *BackupService) checkBackupConn(backup *model.BackupAccount) (bool, erro if _, err := client.Upload(fileItem, targetPath); err != nil { return false, err } - _, _ = client.Delete(path.Join(backup.BackupPath, "test")) + _, _ = client.Delete(path.Join(backup.BackupPath, "test/1panel")) return true, nil } diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 9367c6d54..e4b4431cb 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1771,6 +1771,7 @@ const message = { taskLog: 'Retain Task Log', monitorData: 'Retain Monitoring Data', selectAllImage: 'Backup All Application Images', + logLabel: 'Log', agentLabel: 'Node Configuration', appDataLabel: 'Application Data', appImage: 'Application Image', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index ac801c5e2..a0da46a97 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -1667,6 +1667,41 @@ const message = { 'バックアップファイルは現在のバックアップリストにありません。ファイルディレクトリからダウンロードして、バックアップ用にインポートしてみてください。', snapshot: 'スナップショット|スナップショット', + noAppData: '選択可能なシステムアプリはありません', + noBackupData: '選択可能なバックアップデータはありません', + stepBaseData: '基本データ', + stepAppData: 'システムアプリ', + stepPanelData: 'システムデータ', + stepBackupData: 'バックアップデータ', + stepOtherData: 'その他のデータ', + operationLog: '操作ログを保持', + loginLog: 'アクセスログを保持', + systemLog: 'システムログを保持', + taskLog: 'タスクログを保持', + monitorData: '監視データを保持', + selectAllImage: 'すべてのアプリイメージをバックアップ', + logLabel: 'ログ', + agentLabel: 'ノード設定', + appDataLabel: 'アプリデータ', + appImage: 'アプリイメージ', + appBackup: 'アプリバックアップ', + backupLabel: 'バックアップディレクトリ', + confLabel: '設定ファイル', + dockerLabel: 'コンテナ', + taskLabel: 'スケジュールタスク', + resourceLabel: 'アプリリソースディレクトリ', + runtimeLabel: '実行環境', + appLabel: 'アプリ', + databaseLabel: 'データベース', + snapshotLabel: 'スナップショットファイル', + websiteLabel: 'ウェブサイト', + directoryLabel: 'ディレクトリ', + appStoreLabel: 'アプリストア', + shellLabel: 'スクリプト', + tmpLabel: '一時ディレクトリ', + sslLabel: '証明書ディレクトリ', + reCreate: 'スナップショットの作成に失敗しました', + reRollback: 'スナップショットのロールバックに失敗しました', deleteHelper: 'サードパーティのバックアップアカウントにあるものを含むすべてのスナップショットファイルが削除されます。続けたいですか?', status: 'スナップショットステータス', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index d8a725c95..66caaaddd 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -1643,6 +1643,41 @@ const message = { backupJump: '현재 백업 목록에 없는 파일입니다. 파일 디렉토리에서 다운로드하여 백업에 가져오기를 시도하세요.', snapshot: '스냅샷 | 스냅샷들', + noAppData: '선택할 수 있는 시스템 앱이 없습니다', + noBackupData: '선택할 수 있는 백업 데이터가 없습니다', + stepBaseData: '기본 데이터', + stepAppData: '시스템 앱', + stepPanelData: '시스템 데이터', + stepBackupData: '백업 데이터', + stepOtherData: '기타 데이터', + operationLog: '작업 로그 유지', + loginLog: '접속 로그 유지', + systemLog: '시스템 로그 유지', + taskLog: '작업 로그 유지', + monitorData: '모니터링 데이터 유지', + selectAllImage: '모든 앱 이미지를 백업', + logLabel: '로그', + agentLabel: '노드 설정', + appDataLabel: '앱 데이터', + appImage: '앱 이미지', + appBackup: '앱 백업', + backupLabel: '백업 디렉토리', + confLabel: '설정 파일', + dockerLabel: '컨테이너', + taskLabel: '예약 작업', + resourceLabel: '앱 리소스 디렉토리', + runtimeLabel: '실행 환경', + appLabel: '앱', + databaseLabel: '데이터베이스', + snapshotLabel: '스냅샷 파일', + websiteLabel: '웹사이트', + directoryLabel: '디렉토리', + appStoreLabel: '앱 스토어', + shellLabel: '스크립트', + tmpLabel: '임시 디렉토리', + sslLabel: '인증서 디렉토리', + reCreate: '스냅샷 생성 실패', + reRollback: '스냅샷 롤백 실패', deleteHelper: '타사 백업 계정에 포함된 스냅샷 파일을 포함하여 모든 스냅샷 파일이 삭제됩니다. 계속하시겠습니까?', status: '스냅샷 상태', ignoreRule: '무시 규칙', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 209041cb0..8bc706d30 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -1725,6 +1725,41 @@ const message = { 'Fail sandaran tidak berada dalam senarai sandaran semasa, sila cuba muat turun dari direktori fail dan import untuk sandaran.', snapshot: 'Snapshot | Snapshots', + noAppData: 'Tiada aplikasi sistem yang boleh dipilih', + noBackupData: 'Tiada data sandaran yang boleh dipilih', + stepBaseData: 'Data Asas', + stepAppData: 'Aplikasi Sistem', + stepPanelData: 'Data Sistem', + stepBackupData: 'Data Sandaran', + stepOtherData: 'Data Lain', + operationLog: 'Simpan log operasi', + loginLog: 'Simpan log akses', + systemLog: 'Simpan log sistem', + taskLog: 'Simpan log tugas', + monitorData: 'Simpan data pemantauan', + selectAllImage: 'Simpan semua imej aplikasi', + logLabel: 'Log', + agentLabel: 'Konfigurasi Nod', + appDataLabel: 'Data Aplikasi', + appImage: 'Imej Aplikasi', + appBackup: 'Sandaran Aplikasi', + backupLabel: 'Direktori Sandaran', + confLabel: 'Fail Konfigurasi', + dockerLabel: 'Konteks', + taskLabel: 'Tugas Berjadual', + resourceLabel: 'Direktori Sumber Aplikasi', + runtimeLabel: 'Persekitaran Runtime', + appLabel: 'Aplikasi', + databaseLabel: 'Pangkalan Data', + snapshotLabel: 'Fail Snapshot', + websiteLabel: 'Laman Web', + directoryLabel: 'Direktori', + appStoreLabel: 'Kedai Aplikasi', + shellLabel: 'Skrip', + tmpLabel: 'Direktori Sementara', + sslLabel: 'Direktori Sijil', + reCreate: 'Gagal membuat snapshot', + reRollback: 'Gagal membalikkan snapshot', deleteHelper: 'Semua fail snapshot termasuk yang ada dalam akaun sandaran pihak ketiga akan dipadamkan. Adakah anda mahu meneruskan?', status: 'Status snapshot', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 50490abb3..0fc9b1624 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -1708,6 +1708,41 @@ const message = { 'Arquivos de backup não estão na lista de backup atual, tente fazer o download do diretório de arquivos e importar para o backup.', snapshot: 'Snapshot | Snapshots', + noAppData: 'Nenhum aplicativo do sistema disponível para seleção', + noBackupData: 'Nenhum dado de backup disponível para seleção', + stepBaseData: 'Dados Básicos', + stepAppData: 'Aplicativos do Sistema', + stepPanelData: 'Dados do Sistema', + stepBackupData: 'Dados de Backup', + stepOtherData: 'Outros Dados', + operationLog: 'Manter logs de operações', + loginLog: 'Manter logs de acesso', + systemLog: 'Manter logs do sistema', + taskLog: 'Manter logs de tarefas', + monitorData: 'Manter dados de monitoramento', + selectAllImage: 'Fazer backup de todas as imagens de aplicativos', + logLabel: 'Log', + agentLabel: 'Configuração do Nó', + appDataLabel: 'Dados de Aplicativos', + appImage: 'Imagem do Aplicativo', + appBackup: 'Backup de Aplicativo', + backupLabel: 'Diretório de Backup', + confLabel: 'Arquivos de Configuração', + dockerLabel: 'Contêineres', + taskLabel: 'Tarefas Agendadas', + resourceLabel: 'Diretório de Recursos do Aplicativo', + runtimeLabel: 'Ambiente de Execução', + appLabel: 'Aplicativo', + databaseLabel: 'Banco de Dados', + snapshotLabel: 'Arquivos de Snapshot', + websiteLabel: 'Site', + directoryLabel: 'Diretório', + appStoreLabel: 'Loja de Aplicativos', + shellLabel: 'Script', + tmpLabel: 'Diretório Temporário', + sslLabel: 'Diretório de Certificados', + reCreate: 'Falha ao criar snapshot', + reRollback: 'Falha ao reverter snapshot', deleteHelper: 'Todos os arquivos de snapshot, incluindo os da conta de backup de terceiros, serão excluídos. Você deseja continuar?', status: 'Status do snapshot', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index ed6b67051..f72f22821 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -1710,6 +1710,41 @@ const message = { 'Файлы резервной копии отсутствуют в текущем списке резервных копий, попробуйте скачать из директории файлов и импортировать для резервного копирования.', snapshot: 'Снапшот | Снапшоты', + noAppData: 'Нет доступных системных приложений для выбора', + noBackupData: 'Нет доступных данных для резервного копирования', + stepBaseData: 'Основные данные', + stepAppData: 'Системные приложения', + stepPanelData: 'Системные данные', + stepBackupData: 'Резервные данные', + stepOtherData: 'Другие данные', + operationLog: 'Сохранять журнал операций', + loginLog: 'Сохранять журнал доступа', + systemLog: 'Сохранять системный журнал', + taskLog: 'Сохранять журнал задач', + monitorData: 'Сохранять данные мониторинга', + selectAllImage: 'Резервное копирование всех образов приложений', + logLabel: 'Журнал', + agentLabel: 'Конфигурация узла', + appDataLabel: 'Данные приложения', + appImage: 'Образ приложения', + appBackup: 'Резервная копия приложения', + backupLabel: 'Каталог резервных копий', + confLabel: 'Конфигурационные файлы', + dockerLabel: 'Контейнеры', + taskLabel: 'Планировщик задач', + resourceLabel: 'Каталог ресурсов приложения', + runtimeLabel: 'Среда выполнения', + appLabel: 'Приложение', + databaseLabel: 'База данных', + snapshotLabel: 'Файлы снимков', + websiteLabel: 'Веб-сайт', + directoryLabel: 'Каталог', + appStoreLabel: 'Магазин приложений', + shellLabel: 'Скрипт', + tmpLabel: 'Временный каталог', + sslLabel: 'Каталог сертификатов', + reCreate: 'Не удалось создать снимок', + reRollback: 'Не удалось откатить снимок', deleteHelper: 'Все файлы снапшотов, включая те, что находятся в сторонних аккаунтах резервного копирования, будут удалены. Хотите продолжить?', status: 'Статус снапшота', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index adcbe7f99..fbb5d06dc 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -1569,6 +1569,7 @@ const message = { taskLog: '保留任務日誌', monitorData: '保留監控數據', selectAllImage: '備份所有應用鏡像', + logLabel: '日誌', agentLabel: '節點配置', appDataLabel: '應用數據', appImage: '應用鏡像', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index c52b06c0b..5991de6ca 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1560,6 +1560,7 @@ const message = { stepOtherData: '其他数据', monitorData: '监控数据', selectAllImage: '备份所有应用镜像', + logLabel: '日志', agentLabel: '节点配置', appDataLabel: '应用数据', appImage: '应用镜像', diff --git a/frontend/src/views/container/dashboard/index.vue b/frontend/src/views/container/dashboard/index.vue index 5cb4622bd..d89f679da 100644 --- a/frontend/src/views/container/dashboard/index.vue +++ b/frontend/src/views/container/dashboard/index.vue @@ -179,7 +179,7 @@ const loadContainerSetting = async () => { countItem.mirrors = res.data.registryMirrors || []; const settingRes = await getSettingInfo(); - countItem.sockPath = settingRes.data.dockerSockPath || 'unix:///var/run/docker-x.sock'; + countItem.sockPath = settingRes.data.dockerSockPath || 'unix:///var/run/docker.sock'; }; const goRouter = async (val: string) => { diff --git a/frontend/src/views/container/setting/index.vue b/frontend/src/views/container/setting/index.vue index 55317e6f8..72256b0bc 100644 --- a/frontend/src/views/container/setting/index.vue +++ b/frontend/src/views/container/setting/index.vue @@ -233,7 +233,7 @@ import { updateDaemonJson, updateDaemonJsonByfile, } from '@/api/modules/container'; -import { getSettingInfo } from '@/api/modules/setting'; +import { getAgentSettingInfo } from '@/api/modules/setting'; import { MsgSuccess } from '@/utils/message'; import { checkNumberRange } from '@/global/form-rules'; import { GlobalStore } from '@/store'; @@ -498,8 +498,8 @@ const search = async () => { form.ip6Tables = res.data.ip6Tables; form.experimental = res.data.experimental; - const settingRes = await getSettingInfo(); - form.dockerSockPath = settingRes.data.dockerSockPath || 'unix:///var/run/docker-x.sock'; + const settingRes = await getAgentSettingInfo(); + form.dockerSockPath = settingRes.data.dockerSockPath || 'unix:///var/run/docker.sock'; }; onMounted(() => {