c0cdd95e56
Hub: GFS retention (7d/4w/3m, ~14 versions) in new infra_backup_versions table. Recovery endpoint supports ?version=ID. New /versions API endpoint. Dashboard shows backup history. Controller: local drive backups rotated into history/ (last 5 versions). Setup wizard shows version picker for Hub restores when multiple versions exist. Scan results enriched with app names, disk count, history badge. Local restore supports historical versions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
2.3 KiB
Go
57 lines
2.3 KiB
Go
package backup
|
|
|
|
import "path/filepath"
|
|
|
|
// FelhomDataDir is the namespace directory on storage drives for all felhom-managed data.
|
|
const FelhomDataDir = "felhom-data"
|
|
|
|
// PrimaryBackupPath returns the root primary backup directory for a drive.
|
|
func PrimaryBackupPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "primary")
|
|
}
|
|
|
|
// PrimaryResticRepoPath returns the restic repo path on a drive's primary backup.
|
|
func PrimaryResticRepoPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "primary", "restic")
|
|
}
|
|
|
|
// AppDBDumpPath returns the DB dump directory for an app on its home drive.
|
|
func AppDBDumpPath(drivePath, stackName string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "primary", stackName, "db-dumps")
|
|
}
|
|
|
|
// SecondaryBackupPath returns the root secondary backup directory for a drive.
|
|
func SecondaryBackupPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary")
|
|
}
|
|
|
|
// AppSecondaryRsyncPath returns the rsync destination for an app's secondary backup.
|
|
func AppSecondaryRsyncPath(drivePath, stackName string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", stackName, "rsync")
|
|
}
|
|
|
|
// SecondaryResticRepoPath returns the restic repo path on a drive's secondary backup.
|
|
func SecondaryResticRepoPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", "restic")
|
|
}
|
|
|
|
// SecondaryInfraPath returns the infrastructure config mirror directory on a drive's secondary backup.
|
|
func SecondaryInfraPath(drivePath string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "backups", "secondary", "_infra")
|
|
}
|
|
|
|
// AppDataDir returns the app data directory path on a drive.
|
|
func AppDataDir(drivePath, stackName string) string {
|
|
return filepath.Join(drivePath, FelhomDataDir, "appdata", stackName)
|
|
}
|
|
|
|
// InfraBackupDir returns the hidden infra backup directory on a drive.
|
|
func InfraBackupDir(mountPath string) string {
|
|
return filepath.Join(mountPath, ".felhom-infra-backup")
|
|
}
|
|
|
|
// InfraBackupHistoryDir returns the history subdirectory for versioned infra backups on a drive.
|
|
func InfraBackupHistoryDir(mountPath string) string {
|
|
return filepath.Join(mountPath, ".felhom-infra-backup", "history")
|
|
}
|