Skip to content
← Back to Snippets
Code

Backup Schedule Advisor

Recommends backup cadence and retention windows from data criticality, update frequency, and recovery goals.

Purpose

Recommends backup cadence and retention windows from data criticality, update frequency, and recovery goals.

Snippet details

ContextSystemLevelAdvancedCopy-and-paste statusMarked safe after review.

Categories

  • Security

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */

/**
 * Backup Schedule Advisor.
 *
 * Purpose:
 * Recommends backup cadence and retention windows from data criticality, update frequency, and recovery goals.
 *
 * @param string $criticality low, medium, high, or critical.
 * @param int $daily_change_count Estimated records changed per day.
 * @param int $recovery_hours Target recovery window.
 * @return array Backup schedule recommendation.
 */
function ogSnippetBackupScheduleAdvisor(string $criticality, int $daily_change_count, int $recovery_hours): array {
	$frequency = 'weekly';
	$retention_days = 30;
	if ($criticality === 'high' || $criticality === 'critical' || $daily_change_count > 1000) {
		$frequency = 'daily';
		$retention_days = 90;
	}
	if ($criticality === 'critical' && $recovery_hours <= 4) {
		$frequency = 'hourly snapshots plus daily full backup';
		$retention_days = 180;
	}
	return array('frequency' => $frequency, 'retention_days' => $retention_days, 'offsite_required' => $criticality !== 'low');
}

$backup_advice = ogSnippetBackupScheduleAdvisor('critical', 4200, 2);
echo $backup_advice['frequency'];