storage: add copyDir

we changed listDir in c44863a9bb to list
a directory . this broke copy for files since a '/' is added when listing
the file.
This commit is contained in:
Girish Ramakrishnan
2025-08-25 23:45:14 +02:00
parent cdda8649fc
commit 31df40a841
7 changed files with 90 additions and 14 deletions

View File

@@ -5,6 +5,7 @@ exports = module.exports = {
upload,
verify,
getFileExtension,
copy,
_saveFsMetadata: saveFsMetadata,
_restoreFsMetadata: restoreFsMetadata
@@ -292,6 +293,15 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) {
return await sync(backupTarget, remotePath, dataLayout, progressCallback); // { stats, integrityMap }
}
async function copy(backupTarget, fromPath, toPath, progressCallback) {
assert.strictEqual(typeof backupTarget, 'object');
assert.strictEqual(typeof fromPath, 'string');
assert.strictEqual(typeof toPath, 'string');
assert.strictEqual(typeof progressCallback, 'function');
await backupTargets.storageApi(backupTarget).copyDir(backupTarget.config, fromPath, toPath, progressCallback);
}
function getFileExtension(encryption) {
assert.strictEqual(typeof encryption, 'boolean');

View File

@@ -271,6 +271,15 @@ async function upload(backupTarget, remotePath, dataLayout, progressCallback) {
});
}
async function copy(backupTarget, fromPath, toPath, progressCallback) {
assert.strictEqual(typeof backupTarget, 'object');
assert.strictEqual(typeof fromPath, 'string');
assert.strictEqual(typeof toPath, 'string');
assert.strictEqual(typeof progressCallback, 'function');
await backupTargets.storageApi(backupTarget).copy(backupTarget.config, fromPath, toPath, progressCallback);
}
async function verify(backupTarget, remotePath, integrityMap, progressCallback) {
assert.strictEqual(typeof backupTarget, 'object');
assert.strictEqual(typeof remotePath, 'string');
@@ -340,6 +349,7 @@ exports = module.exports = {
upload,
verify,
getFileExtension,
copy,
// exported for testing
_EnsureFileSizeStream: EnsureFileSizeStream