rsync: add integrity information

This commit is contained in:
Girish Ramakrishnan
2025-08-13 09:39:36 +05:30
parent 28ac9e153e
commit 2fabfbe8f6
4 changed files with 49 additions and 31 deletions

View File

@@ -257,15 +257,15 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) {
const { stats, integrity } = await tarPack(dataLayout, backupTarget.encryption, uploader, progressCallback);
const integrityMap = new Map();
integrityMap.set(path.basename(remotePath), ...integrity);
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 */, integrityDataJsonString, backupTarget.integrityKeyPair.privateKey);
return { stats, integrity };
const signature = await crypto.sign(null /* algorithm */, integrityDataJsonString, backupTarget.integrityKeyPair.privateKey);
return { stats, integrity: { signature } };
});
}