diff --git a/packages/core/data-transfer/src/engine/index.ts b/packages/core/data-transfer/src/engine/index.ts index 4ab7aaf028..261c3e3915 100644 --- a/packages/core/data-transfer/src/engine/index.ts +++ b/packages/core/data-transfer/src/engine/index.ts @@ -727,6 +727,9 @@ class TransferEngine< async transferAssets(): Promise { const stage: TransferStage = 'assets'; + if (this.shouldSkipStage(stage)) { + return; + } const source = await this.sourceProvider.createAssetsReadStream?.(); const destination = await this.destinationProvider.createAssetsWriteStream?.(); diff --git a/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts b/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts index f8a5dc0e50..a5555dc3aa 100644 --- a/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts +++ b/packages/core/data-transfer/src/strapi/providers/local-destination/index.ts @@ -156,10 +156,16 @@ class LocalStrapiDestinationProvider implements IDestinationProvider { `uploads_backup_${Date.now()}` ); - await fse.move(assetsDirectory, backupDirectory); - await fse.mkdir(assetsDirectory); - // Create a .gitkeep file to ensure the directory is not empty - await fse.outputFile(path.join(assetsDirectory, '.gitkeep'), ''); + try { + await fse.move(assetsDirectory, backupDirectory); + await fse.mkdir(assetsDirectory); + // Create a .gitkeep file to ensure the directory is not empty + await fse.outputFile(path.join(assetsDirectory, '.gitkeep'), ''); + } catch (err) { + throw new ProviderTransferError( + 'The backup folder for the assets could not be created inside the public folder. Please ensure Strapi has write permissions on the public directory' + ); + } return new Writable({ objectMode: true,