diff --git a/package-lock.json b/package-lock.json index 9cdab25da..bc0254c50 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "async": "^3.2.5", "aws-sdk": "^2.1637.0", "basic-auth": "^2.0.1", - "cloudron-manifestformat": "^5.26.1", + "cloudron-manifestformat": "^5.26.2", "connect": "^3.7.0", "connect-lastmile": "^2.2.0", "connect-timeout": "^1.9.0", @@ -1086,9 +1086,9 @@ } }, "node_modules/cloudron-manifestformat": { - "version": "5.26.1", - "resolved": "https://registry.npmjs.org/cloudron-manifestformat/-/cloudron-manifestformat-5.26.1.tgz", - "integrity": "sha512-BrTQ9FGXXohRmCJo2ZFn1CYSr07qk3GLCchjdD0NCzzp+cTc7zyJmloT6p+jZQWHbqFyYOINH+LqghBWp8cLjQ==", + "version": "5.26.2", + "resolved": "https://registry.npmjs.org/cloudron-manifestformat/-/cloudron-manifestformat-5.26.2.tgz", + "integrity": "sha512-o8q4HXQvYHIbZK4xftzffO2gTzw+U0797IiXzdVNszpEUkcoqeN1RNvRdAYl3vXPE92VL3MF0o5iN8tBFoWbng==", "license": "MIT", "dependencies": { "cron": "^3.2.1", diff --git a/package.json b/package.json index c0ec1d030..2a9c4a4e7 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "async": "^3.2.5", "aws-sdk": "^2.1637.0", "basic-auth": "^2.0.1", - "cloudron-manifestformat": "^5.26.1", + "cloudron-manifestformat": "^5.26.2", "connect": "^3.7.0", "connect-lastmile": "^2.2.0", "connect-timeout": "^1.9.0", diff --git a/src/services.js b/src/services.js index d2be05d56..daaf62dfd 100644 --- a/src/services.js +++ b/src/services.js @@ -911,14 +911,16 @@ async function backupSqlite(app, options) { const volumeDataDir = await apps.getStorageDir(app); - const cmd = `sqlite3 ${options.path} ".dump"`; - const runCmd = `docker run --rm --name=sqlite-${app.id} \ - --net cloudron \ - -v ${volumeDataDir}:/app/data \ - --label isCloudronManaged=true \ - --read-only -v /tmp -v /run ${infra.images.base} ${cmd} > ${dumpPath('sqlite', app.id)}`; + for (const p of options.paths) { + const cmd = `sqlite3 ${p} ".dump"`; + const runCmd = `docker run --rm --name=sqlite-${app.id} \ + --net cloudron \ + -v ${volumeDataDir}:/app/data \ + --label isCloudronManaged=true \ + --read-only -v /tmp -v /run ${infra.images.base} ${cmd} > ${dumpPath('sqlite', app.id)}`; - await shell.bash(runCmd, { encoding: 'utf8' }); + await shell.bash(runCmd, { encoding: 'utf8' }); + } } async function backupLocalStorage(app, options) { @@ -936,14 +938,16 @@ async function restoreSqlite(app, options) { const volumeDataDir = await apps.getStorageDir(app); - const cmd = `sqlite3 ${options.path}`; - const runCmd = `docker run --rm --name=sqlite-${app.id} \ - --net cloudron \ - -v ${volumeDataDir}:/app/data \ - --label isCloudronManaged=true \ - --read-only -v /tmp -v /run ${infra.images.base} ${cmd} < ${dumpPath('sqlite', app.id)}`; + for (const p of options.paths) { + const cmd = `sqlite3 ${p}`; + const runCmd = `docker run --rm --name=sqlite-${app.id} \ + --net cloudron \ + -v ${volumeDataDir}:/app/data \ + --label isCloudronManaged=true \ + --read-only -v /tmp -v /run ${infra.images.base} ${cmd} < ${dumpPath('sqlite', app.id)}`; - await shell.bash(runCmd, { encoding: 'utf8' }); + await shell.bash(runCmd, { encoding: 'utf8' }); + } } async function restoreLocalStorage(app, options) {