From 59e1391fae2ceff9dddc0a2a16dfb95ed4f4ce4a Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Tue, 30 Jan 2024 10:03:31 -0800 Subject: [PATCH] fix restore on lxc --- server/src/plugin/plugin-volume.ts | 10 ++++++++-- server/src/services/backup.ts | 13 +++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/server/src/plugin/plugin-volume.ts b/server/src/plugin/plugin-volume.ts index c98aa4db8..ebd9d0ef0 100644 --- a/server/src/plugin/plugin-volume.ts +++ b/server/src/plugin/plugin-volume.ts @@ -7,9 +7,15 @@ export function getScryptedVolume() { return volumeDir; } -export function getPluginVolume(pluginId: string) { +export function getPluginsVolume() { const volume = getScryptedVolume(); - const pluginVolume = path.join(volume, 'plugins', pluginId); + const pluginsVolume = path.join(volume, 'plugins'); + return pluginsVolume; +} + +export function getPluginVolume(pluginId: string) { + const volume = getPluginsVolume(); + const pluginVolume = path.join(volume, pluginId); return pluginVolume; } diff --git a/server/src/services/backup.ts b/server/src/services/backup.ts index 6de7a8162..94003df27 100644 --- a/server/src/services/backup.ts +++ b/server/src/services/backup.ts @@ -2,9 +2,10 @@ import fs from 'fs'; import path from 'path'; import Level from '../level'; import { sleep } from '../sleep'; -import { getScryptedVolume } from '../plugin/plugin-volume'; +import { getPluginsVolume, getScryptedVolume } from '../plugin/plugin-volume'; import AdmZip from 'adm-zip'; import { ScryptedRuntime } from '../runtime'; +import { getPluginNodePath } from '../plugin/plugin-npm-dependencies'; export class Backup { constructor(public runtime: ScryptedRuntime) {} @@ -48,13 +49,17 @@ export class Backup { await sleep(5000); await this.runtime.datastore.close(); - await fs.promises.rm(volumeDir, { + // nuke the existing database path + await fs.promises.rm(dbPath, { recursive: true, force: true, }); - await fs.promises.mkdir(volumeDir, { - recursive: true + // nuke all the plugins and associated files downloaded by thhem. + // first run after restore will reinstall everything. + await fs.promises.rm(getPluginsVolume(), { + recursive: true, + force: true, }); zip.extractAllTo(dbPath, true);