backups: stash the stats to the backups table
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
const assert = require('assert'),
|
||||
backupTargets = require('../backuptargets.js'),
|
||||
blobs = require('../blobs.js'),
|
||||
BoxError = require('../boxerror.js'),
|
||||
crypto = require('crypto'),
|
||||
DataLayout = require('../datalayout.js'),
|
||||
@@ -164,7 +163,10 @@ async function tarPack(dataLayout, encryption, uploader, progressCallback) {
|
||||
debug(`tarPack: pipeline finished: ${JSON.stringify(ps.stats())}`);
|
||||
|
||||
await uploader.finish();
|
||||
return { size: ps.stats().transferred, sha256: hash.digest('hex') };
|
||||
return {
|
||||
stats: ps.stats(),
|
||||
integrity: { size: ps.stats().transferred, sha256: hash.digest('hex') }
|
||||
};
|
||||
}
|
||||
|
||||
async function tarExtract(inStream, dataLayout, encryption, progressCallback) {
|
||||
@@ -252,17 +254,17 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) {
|
||||
progressCallback({ message: `Uploading backup ${remotePath}` });
|
||||
|
||||
const uploader = await backupTargets.storageApi(backupTarget).upload(backupTarget.config, remotePath);
|
||||
const { size, sha256 } = await tarPack(dataLayout, backupTarget.encryption, uploader, progressCallback);
|
||||
const { stats, integrity } = await tarPack(dataLayout, backupTarget.encryption, uploader, progressCallback);
|
||||
|
||||
const checksumData = [{ filename: path.basename(remotePath), size, sha256 }];
|
||||
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 checksumSignature = await crypto.sign(null /* algorithm */, checksumDataJsonString, backupTarget.integrityKeyPair.privateKey);
|
||||
return { size, sha256, checksumSignature };
|
||||
integrity.signature = await crypto.sign(null /* algorithm */, checksumDataJsonString, backupTarget.integrityKeyPair.privateKey);
|
||||
return { stats, integrity };
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user