backups: add backup multiple targets

This commit is contained in:
Girish Ramakrishnan
2025-07-24 19:02:02 +02:00
parent 100bea981d
commit 3aafbd2ccb
25 changed files with 744 additions and 535 deletions

View File

@@ -11,7 +11,7 @@ exports = module.exports = {
stopJobs,
handleBackupPolicyChanged,
handleBackupScheduleChanged,
handleTimeZoneChanged,
handleAutoupdatePatternChanged,
handleDynamicDnsChanged,
@@ -203,24 +203,24 @@ async function startJobs() {
start: true
});
await handleBackupPolicyChanged(await backupTargets.getPolicy());
await handleBackupScheduleChanged(await backupTargets._getDefault());
await handleAutoupdatePatternChanged(await updater.getAutoupdatePattern());
await handleDynamicDnsChanged(await network.getDynamicDns());
await handleExternalLdapChanged(await externalLdap.getConfig());
}
async function handleBackupPolicyChanged(value) {
assert.strictEqual(typeof value, 'object');
async function handleBackupScheduleChanged(target) {
assert.strictEqual(typeof target, 'object');
const tz = await cloudron.getTimeZone();
debug(`backupPolicyChanged: schedule ${value.schedule} (${tz})`);
debug(`backupPolicyChanged: schedule ${target.schedule} (${tz})`);
if (gJobs.backup) gJobs.backup.stop();
gJobs.backup = null;
gJobs.backup = CronJob.from({
cronTime: value.schedule,
cronTime: target.schedule,
onTick: async () => await safe(backupTargets.startBackupTask(AuditSource.CRON), { debug }),
start: true,
timeZone: tz