feat: Multi-remote storage — separate table for multiple destinations per profile #97

Closed
opened 2026-06-23 15:35:58 +00:00 by jmiller · 0 comments
Owner

Summary

Refactor remote storage from profile columns to a dedicated #__mokosuitebackup_remote_destinations table. Each profile can have multiple remote destinations (e.g., SFTP to server A + S3 to bucket B + Google Drive).

Architecture

  • New table: #__mokosuitebackup_remote_destinations (id, profile_id, type, title, params JSON, enabled, ordering)
  • Profile edit view: repeatable subform or linked list for managing destinations
  • BackupEngine: iterate all enabled destinations for the profile, upload to each
  • Per-destination tabs in the profile UI

Why

Currently a profile can only upload to ONE remote destination. Sites that need both an on-site SFTP copy and a cloud S3 copy must create duplicate profiles.

Files

  • New table + SQL migration
  • New model/table classes for remote destinations
  • Refactor BackupEngine + SteppedBackupEngine upload logic
  • Profile form: repeatable subform or linked CRUD view
  • Migrate existing profile remote columns to new table
## Summary Refactor remote storage from profile columns to a dedicated `#__mokosuitebackup_remote_destinations` table. Each profile can have multiple remote destinations (e.g., SFTP to server A + S3 to bucket B + Google Drive). ## Architecture - New table: `#__mokosuitebackup_remote_destinations` (id, profile_id, type, title, params JSON, enabled, ordering) - Profile edit view: repeatable subform or linked list for managing destinations - BackupEngine: iterate all enabled destinations for the profile, upload to each - Per-destination tabs in the profile UI ## Why Currently a profile can only upload to ONE remote destination. Sites that need both an on-site SFTP copy and a cloud S3 copy must create duplicate profiles. ## Files - New table + SQL migration - New model/table classes for remote destinations - Refactor BackupEngine + SteppedBackupEngine upload logic - Profile form: repeatable subform or linked CRUD view - Migrate existing profile remote columns to new table
jmiller added the component: enginecomponent: admin labels 2026-06-23 15:35:58 +00:00
Sign in to join this conversation.
Priority Medium
Type Feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoSuiteBackup#97