backup-retention-policy

Backup Retention Policy Expert

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "backup-retention-policy" with this command: npx skills add dengineproblem/agents-monorepo/dengineproblem-agents-monorepo-backup-retention-policy

Backup Retention Policy Expert

Эксперт по управлению жизненным циклом данных и восстановления после сбоев.

Правило 3-2-1-1-0

  • 3 копии важных данных (1 основная + 2 резервные)

  • 2 различных типа носителей

  • 1 внешняя/облачная резервная копия

  • 1 автономная/неизменяемая резервная копия

  • 0 ошибок после тестирования

Уровни хранения

Уровень Доступ Период Стоимость

Горячий Частый 0-30 дней $$$

Теплый Периодический 30-90 дней $$

Холодный Редкий 90 дней-7 лет $

Архив Долгосрочный 7+ лет ¢

AWS S3 Lifecycle Policy

{ "Rules": [ { "ID": "BackupLifecycle", "Status": "Enabled", "Filter": { "Prefix": "backups/" }, "Transitions": [ { "Days": 30, "StorageClass": "STANDARD_IA" }, { "Days": 90, "StorageClass": "GLACIER" }, { "Days": 365, "StorageClass": "DEEP_ARCHIVE" } ], "Expiration": { "Days": 2555 }, "NoncurrentVersionTransitions": [ { "NoncurrentDays": 30, "StorageClass": "GLACIER" } ], "NoncurrentVersionExpiration": { "NoncurrentDays": 365 } } ] }

Azure Blob Lifecycle

{ "rules": [ { "name": "backupRetention", "type": "Lifecycle", "definition": { "actions": { "baseBlob": { "tierToCool": {"daysAfterModificationGreaterThan": 30}, "tierToArchive": {"daysAfterModificationGreaterThan": 90}, "delete": {"daysAfterModificationGreaterThan": 2555} }, "snapshot": { "delete": {"daysAfterCreationGreaterThan": 90} } }, "filters": { "blobTypes": ["blockBlob"], "prefixMatch": ["backups/"] } } } ] }

Скрипт ротации бэкапов

#!/bin/bash BACKUP_DIR="/var/backups" DAILY_RETENTION=7 WEEKLY_RETENTION=4 MONTHLY_RETENTION=12

Удаление ежедневных старше 7 дней

find "$BACKUP_DIR/daily" -type f -mtime +$DAILY_RETENTION -delete

Удаление еженедельных старше 4 недель

find "$BACKUP_DIR/weekly" -type f -mtime +$((WEEKLY_RETENTION * 7)) -delete

Удаление ежемесячных старше 12 месяцев

find "$BACKUP_DIR/monthly" -type f -mtime +$((MONTHLY_RETENTION * 30)) -delete

Логирование

echo "$(date): Rotation completed" >> /var/log/backup_rotation.log

PostgreSQL Backup

#!/bin/bash DB_NAME="production" BACKUP_DIR="/var/backups/postgres" DATE=$(date +%Y%m%d_%H%M%S)

Полный бэкап

pg_dump -Fc -f "$BACKUP_DIR/full_$DATE.dump" $DB_NAME

Инкрементальный с WAL

pg_basebackup -D "$BACKUP_DIR/base_$DATE" -Ft -z -P

Архивация WAL логов

archive_command = 'cp %p /var/backups/wal/%f'

MySQL Backup

#!/bin/bash MYSQL_USER="backup_user" MYSQL_PASS="secure_password" BACKUP_DIR="/var/backups/mysql" DATE=$(date +%Y%m%d_%H%M%S)

Полный бэкап

mysqldump --user=$MYSQL_USER --password=$MYSQL_PASS
--all-databases --single-transaction
--routines --triggers --events
| gzip > "$BACKUP_DIR/full_$DATE.sql.gz"

Инкрементальный с binlog

mysqlbinlog --read-from-remote-server
--host=localhost --user=$MYSQL_USER
--raw --stop-never mysql-bin.000001

Compliance Requirements

Стандарт Требование

GDPR Право на удаление, минимизация данных

SOX 7 лет для финансовых записей

HIPAA 6 лет для медицинских данных

PCI DSS 1 год минимум для аудита

RTO/RPO Planning

Критические системы: RPO: 1 час RTO: 4 часа Стратегия: Синхронная репликация + горячий standby

Бизнес-системы: RPO: 4 часа RTO: 24 часа Стратегия: Асинхронная репликация + теплый standby

Архивные системы: RPO: 24 часа RTO: 72 часа Стратегия: Ежедневные бэкапы + холодное хранение

Валидация политик на Python

from datetime import datetime, timedelta from typing import List, Dict

class BackupRetentionValidator: def init(self, retention_policy: Dict): self.policy = retention_policy

def validate_backup(self, backup_date: datetime, backup_type: str) -> bool:
    """Проверка соответствия бэкапа политике хранения"""
    retention_days = self.policy.get(backup_type, {}).get('retention_days', 0)
    expiry_date = backup_date + timedelta(days=retention_days)
    return datetime.now() < expiry_date

def get_expired_backups(self, backups: List[Dict]) -> List[Dict]:
    """Получить список просроченных бэкапов"""
    expired = []
    for backup in backups:
        if not self.validate_backup(backup['date'], backup['type']):
            expired.append(backup)
    return expired

def calculate_storage_forecast(self, daily_backup_size_gb: float) -> Dict:
    """Прогноз использования хранилища"""
    total_storage = 0
    for backup_type, config in self.policy.items():
        retention = config.get('retention_days', 0)
        frequency = config.get('frequency_days', 1)
        copies = retention // frequency
        total_storage += copies * daily_backup_size_gb

    return {
        'total_gb': total_storage,
        'monthly_cost_estimate': total_storage * 0.023  # S3 Standard pricing
    }

График тестирования

Тип теста Частота Охват

Выборочное восстановление Ежемесячно 10% данных

Полное восстановление Ежеквартально Критические системы

DR учения Ежегодно Полный сценарий

Аудит политик Ежегодно Все политики

Мониторинг и алерты

Алерты: backup_failed: severity: critical notification: [pagerduty, slack]

backup_size_anomaly: threshold: 20% severity: warning

retention_violation: severity: high action: auto_remediate

storage_threshold: threshold: 80% severity: warning

Лучшие практики

  • Тестируйте восстановление — бэкап без теста = нет бэкапа

  • Шифруйте данные — AES-256 для данных в покое

  • Версионирование — храните несколько версий

  • Географическое распределение — минимум 2 региона

  • Immutable storage — защита от ransomware

  • Документируйте процедуры — runbooks для DR

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

social-media-marketing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

video-marketing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

frontend-design

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

k6-load-test

No summary provided by upstream source.

Repository SourceNeeds Review