tgz: save integrity information as a Map
just for consistency because rsync will use a Map
This commit is contained in:
@@ -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 };
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user