diff --git a/src/backupformat/tgz.js b/src/backupformat/tgz.js index 7f91afd74..f7301ceb7 100644 --- a/src/backupformat/tgz.js +++ b/src/backupformat/tgz.js @@ -256,14 +256,15 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) { const uploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, remotePath); const { stats, integrity } = await tarPack(dataLayout, backupTarget.encryption, uploader, progressCallback); - const checksumData = [{ filename: path.basename(remotePath), ...integrity }]; - const checksumDataJsonString = JSON.stringify(checksumData, null, 4); - const checksumDataStream = Readable.from(checksumDataJsonString); - const checksumUploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, `${remotePath}.checksum`); - await stream.pipeline(checksumDataStream, checksumUploader.stream); - await checksumUploader.finish(); + const integrityMap = new Map(); + integrityMap.set(path.basename(remotePath), ...integrity); + const integrityDataJsonString = JSON.stringify([...integrityMap], null, 4); + const integrityDataStream = Readable.from(integrityDataJsonString); + const integrityUploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, `${remotePath}.checksum`); + await stream.pipeline(integrityDataStream, integrityUploader.stream); + await integrityUploader.finish(); - integrity.signature = await crypto.sign(null /* algorithm */, checksumDataJsonString, backupTarget.integrityKeyPair.privateKey); + integrity.signature = await crypto.sign(null /* algorithm */, integrityDataJsonString, backupTarget.integrityKeyPair.privateKey); return { stats, integrity }; }); }