Skip to content

BackupCoordinator Module

The BackupCoordinator module orchestrates backup operations across the UmbraCore framework, providing a streamlined approach to managing backup processes.

Overview

BackupCoordinator handles the orchestration of backup operations, managing the creation, scheduling, execution, and monitoring of backups. It coordinates between different modules to provide a cohesive backup experience.

Features

  • Backup task orchestration
  • Backup scheduling and timing
  • Progress monitoring and reporting
  • Error handling and recovery
  • Backup verification and validation

Usage

import BackupCoordinator

// Create a backup coordinator
let coordinator = BackupCoordinator()

// Configure a backup job
let backupJob = BackupJob(
    sources: ["/Users/username/Documents", "/Users/username/Pictures"],
    excludes: ["**/.DS_Store", "**/node_modules"],
    repository: mainRepository,
    schedule: BackupSchedule(
        frequency: .daily,
        preferredTime: "02:00",
        retryStrategy: .exponentialBackoff(maxAttempts: 3)
    ),
    tags: ["documents", "pictures", "important"]
)

// Register the backup job
try coordinator.registerBackupJob(backupJob)

// Run a backup immediately
try await coordinator.runBackupJob(
    id: backupJob.id,
    options: BackupOptions(
        compressionLevel: 6,
        verifyAfterCompletion: true
    )
)

// Monitor progress
coordinator.progressHandler = { progress in
    print("Backup progress: \(progress.percentage)%")
    print("Files processed: \(progress.filesProcessed)")
    print("Bytes processed: \(progress.bytesProcessed)")
}

// Get backup history
let history = try await coordinator.getBackupHistory(
    forRepository: mainRepository,
    limit: 10
)

Integration

BackupCoordinator integrates with:

  • RepositoryManager for repository access and management
  • ResticCLIHelper for executing backup commands
  • UmbraXPC for privileged operations
  • Configuration for backup settings

Advanced Features

  • Incremental backups
  • Snapshot management
  • Differential backup strategies
  • Backup chains and dependencies
  • Resource-aware backup throttling

Source Code

The source code for this module is located in the Sources/BackupCoordinator directory of the UmbraCore repository.