diff --git a/src/backupsites.js b/src/backupsites.js index a651e8110..4f6336c05 100644 --- a/src/backupsites.js +++ b/src/backupsites.js @@ -35,6 +35,8 @@ exports = module.exports = { storageApi, createPseudo, + + reinitAll }; const assert = require('node:assert'), @@ -600,3 +602,10 @@ async function createPseudo(data) { const sanitizedConfig = await storageApi({ provider }).verifyConfig({id, provider, config }); return { id, format, provider, config: sanitizedConfig, encryption }; } + +// after a restore, this recreates the working directories of the sites +async function reinitAll() { + for (const site of await list()) { + if (!safe.fs.mkdirSync(`${paths.BACKUP_INFO_DIR}/${site.id}`, { recursive: true })) throw new BoxError(BoxError.FS_ERROR, `Failed to create info dir: ${safe.error.message}`); + } +} diff --git a/src/provision.js b/src/provision.js index b3d5b5823..be7cba96d 100644 --- a/src/provision.js +++ b/src/provision.js @@ -197,6 +197,8 @@ async function restoreTask(backupSite, remotePath, ipv4Config, ipv6Config, optio await network.setIPv6Config(ipv6Config); await reverseProxy.restoreFallbackCertificates(); + await backupSites.reinitAll(); + const location = await dashboard.getLocation(); // load this fresh from after the backup.restore if (!options.skipDnsSetup) { await dns.registerLocations([location], { overwriteDns: true }, (progress) => setProgress('restore', progress.message));