From fb4cdfba5e1600dd7b8cceb4080f497be2471e40 Mon Sep 17 00:00:00 2001 From: Andrey Sobolev Date: Mon, 27 Nov 2023 22:46:52 +0700 Subject: [PATCH] Allow to backup and skip domain (#4077) Signed-off-by: Andrey Sobolev --- dev/tool/src/index.ts | 10 ++++++++-- server/backup/src/index.ts | 9 +++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dev/tool/src/index.ts b/dev/tool/src/index.ts index c6f24e7804..26e39bec12 100644 --- a/dev/tool/src/index.ts +++ b/dev/tool/src/index.ts @@ -342,9 +342,15 @@ export function devTool ( program .command('backup ') .description('dump workspace transactions and minio resources') - .action(async (dirName: string, workspace: string, cmd) => { + .option('-s, --skip ', 'A list of ; separated domain names to skip during backup', '') + .action(async (dirName: string, workspace: string, cmd: { skip: string }) => { const storage = await createFileBackupStorage(dirName) - await backup(transactorUrl, getWorkspaceId(workspace, productId), storage) + await backup( + transactorUrl, + getWorkspaceId(workspace, productId), + storage, + (cmd.skip ?? '').split(';').map((it) => it.trim()) + ) }) program diff --git a/server/backup/src/index.ts b/server/backup/src/index.ts index 3ddb1d72c6..b260c20be2 100644 --- a/server/backup/src/index.ts +++ b/server/backup/src/index.ts @@ -327,7 +327,12 @@ export async function cloneWorkspace ( /** * @public */ -export async function backup (transactorUrl: string, workspaceId: WorkspaceId, storage: BackupStorage): Promise { +export async function backup ( + transactorUrl: string, + workspaceId: WorkspaceId, + storage: BackupStorage, + skipDomains: string[] = [] +): Promise { const connection = (await connect(transactorUrl, workspaceId, undefined, { mode: 'backup' })) as unknown as CoreClient & BackupClient @@ -337,7 +342,7 @@ export async function backup (transactorUrl: string, workspaceId: WorkspaceId, s ...connection .getHierarchy() .domains() - .filter((it) => it !== DOMAIN_TRANSIENT && it !== DOMAIN_MODEL) + .filter((it) => it !== DOMAIN_TRANSIENT && it !== DOMAIN_MODEL && !skipDomains.includes(it)) ] console.log('domains for dump', domains.length)