Не гадай: точный размер резервной копии через формулу

💻 IT и кодОбновлено: 13 июля 2026 г.5 мин чтения
Вы уверены, что закупили достаточно дисков для бэкапов? Ошибка в расчёте резерва — это потеря данных, сорванный дедлайн и испорченная репутация. Разберём формулу, которая спасёт от переполнения, и покажем, как учитывать инкрементальные, дедупликацию и сжатие без головной боли.
⚡ Коротко: главное
  • Для полного бэкапа базы данных на 100 ГБ с еженедельными инкрементами нужен резерв ~350 ГБ по формуле: полный + (инкремент × число недель) × 1.2 на рост.
  • Коэффициент сжатия для логов — 5:1, для сжатых медиа — 1:1; если не учесть, резерв вырастет в 5 раз.
  • Правило 3-2-1 требует минимум 3 копии на 2 носителях, одна из которых офлайн; это удваивает требуемый размер.
  • Ежемесячный прирост данных в среднем 5-10%; без учёта этого через полгода резерв переполнится.
  • Калькулятор размера резервной копии на сайте автоматически применяет все коэффициенты и считает за секунды.

Базовая формула размера резервной копии

Самый частый вопрос: «Сколько места нужно для бэкапа?» Ответ зависит от типа копии: полная (full), инкрементальная (diff или inc). Базовая формула на один цикл:

Резерв = Размер_полной_копии + (Размер_инкремента × Количество_инкрементов_за_цикл) + Размер_логов (если есть)

Но это без учёта сжатия и дедупликации. Пример: сайт на WordPress с базой 1.2 ГБ и файлами 3 ГБ. Полная копия — 4.2 ГБ. Ежедневный инкремент — ~200 МБ. Храним 7 дней до следующего полного. Резерв = 4.2 + 0.2×7 = 5.6 ГБ. Реально с учётом сжатия (tar.gz даёт ~2:1 на текстовых файлах) — около 3 ГБ. Всегда закладывайте 20% буфер на внезапный рост.

Учёт сжатия и дедупликации: коэффициенты на практике

Сжатие сильно зависит от типа данных. Для текстов и логов коэффициент 5:1 (gzip), для сжатых изображений (JPEG) — 1:1 (не сжимается). Дедупликация на уровне блоков (ZFS, btrfs) даёт выигрыш 2-10x на виртуалках с одинаковыми ОС. Таблица ниже — ориентиры:

Тип данныхКоэфф. сжатия (gzip)Коэфф. дедупликацииИтоговый множитель
Логи сервера5:11:10.2
База MySQL/PostgreSQL3:11.2:10.28
Изображения JPEG1:11.5:10.67
Документы Office2:11.1:10.45

Как применить: размер_после_сжатия = исходный_размер / итоговый_множитель. Например, база 100 ГБ → 100 / 0.28 ≈ 357 ГБ до сжатия? Нет, наоборот: 100 * 0.28 = 28 ГБ после. Все расчёты сжимаемого размера — деление на коэффициент < 1.

Политика хранения: сколько копий и как часто

Универсальная стратегия — GFS (Grandfather-Father-Son):

  • Ежедневные (сын): 7 копий, инкрементальные
  • Еженедельные (отец): 4-5 полных копий (раз в неделю)
  • Ежемесячные (дед): 12 полных копий (первое число месяца)

Формула общего резерва:

Общий_резерв = (размер_полной × (12+5)) + (размер_инкремента × 7 × 0.1) + буфер 20%
Пример: размер полной после сжатия — 50 ГБ, инкрементов — 500 МБ. Итого: (50×17) + (0.5×7) = 850 + 3.5 ≈ 853.5 ГБ. С буфером 20% — 1024 ГБ (1 ТБ). Не забудьте про офлайн-копию (третье правило 3-2-1) — ей нужен отдельный носитель +50% места.

Учёт прироста данных: прогноз на год вперёд

Данные растут — без учёта этого резерв переполнится через месяц. Типичный прирост: 5-10% в месяц для файлов, 2-5% для баз. Формула на N месяцев:

Размер_через_N_мес = Текущий_размер × (1 + ежемесячный_прирост)^N

Пример: текущие данные 200 ГБ, прирост 8% в месяц, нужно хранить 12 месяцев: 200 × (1.08^12) ≈ 200 × 2.518 = 503.6 ГБ. Итоговый резерв с учётом политики GFS: сначала размер данных через год (503.6 ГБ), потом применяем коэффициент полных/инкрементов (пусть 5 полных за год = 5×503.6 = 2518 ГБ) — но это для одного цикла. На практике используют инкрементальное резервирование с постепенным ростом: размер инкремента тоже растёт. Упрощённо: умножаем годовой прогноз на 1.5

Совет: каждые 3 месяца пересчитывайте формулу с актуальными данными. Используйте наш Калькулятор размера резервной копии — он автоматически учитывает прирост.
Как рассчитать размер резервной копии: пошаговый план
  1. 1
    1. Измерьте исходные данные

    Определите размер базы, файлов, логов в несжатом виде.

  2. 2
    2. Примените коэффициенты сжатия

    Для каждого типа данных используйте множитель из таблицы.

  3. 3
    3. Учтите политику хранения

    Сколько полных и инкрементальных копий и за какой период.

  4. 4
    4. Добавьте прирост данных

    Умножьте на (1+прирост)^N для прогноза на N месяцев.

  5. 5
    5. Заложите буфер и метаданные

    Добавьте 20% на рост и 5% на служебную информацию.

  6. 6
    6. Учтите правило 3-2-1

    Повторите расчёт для каждой копии (минимум 3).

Последовательность учёта всех факторов

Подводные камни и частые ошибки

Ошибка 1: Забывают про дублирование правил 3-2-1. Если у вас один RAID-массив, это одна копия. Нужно минимум 3. Каждая дополнительная копия — +100% к месту. Ошибка 2: Считают сжатие неправильно. Сжатие применяется к данным, не к размеру бэкапа. Если база 100 ГБ, сжатие даст 30 ГБ — это размер одной копии. Но если копий 10, то 300 ГБ. Ошибка 3: Не учитывают метаданные бэкапа. Индексы, чек-суммы, служебная информация — 2-5% от объёма. Ошибка 4: Путают гигабайты (ГБ) и гибибайты (ГиБ). Производители дисков мерят в ГБ (1 ГБ = 10^9 байт), системы — в ГиБ (1 ГиБ = 2^30). Разница 7.3% — учтите.

Реальный_размер_диска_в_ГиБ = Номинал_в_ГБ / 1.0737

Например, диск 1 ТБ (1000 ГБ) = 931 ГиБ. Если ваша формула дала 950 ГиБ — он не влезет!

Пример расчёта для типового проекта (веб-приложение)

Дано: веб-приложение, данные растут на 5% в месяц. Текущий размер: база 50 ГБ, файлы 20 ГБ, логи 5 ГБ. Политика: ежедневный полный бэкап (хранить 7 дней), еженедельный (4 недели), ежемесячный (12 месяцев). Сжатие: база — 3:1, файлы — 1.5:1 (компрессия JPEG), логи — 5:1.

  1. Считаем сжатый размер: база 50/3=16.7 ГБ, файлы 20/1.5=13.3 ГБ, логи 5/5=1 ГБ. Итого сжатый = 31 ГБ.
  2. Учитываем метаданные +5%: 31×1.05=32.55 ГБ — размер одной полной копии.
  3. Количество кросс-копий: ежедневные (7) + еженедельные (4) + ежемесячные (12) = 23 копии. Но это полные? Нет, в нашей схеме все — полные (для простоты).
  4. Объём без учёта прироста: 23×32.55 = 748.65 ГБ.
  5. Прирост за 12 месяцев для последней копии: 32.55×(1.05^12) ≈ 32.55×1.7959 = 58.45 ГБ. Средний размер копии с учётом линейного роста можно взять как (32.55+58.45)/2 = 45.5 ГБ. Уточним: фактически каждая копия снимается в разное время, так что общий объём ≈ 23×45.5 = 1046.5 ГБ.
  6. Буфер 20%: 1046.5×1.2 = 1255.8 ГБ ≈ 1.23 ТБ.

Если бы не учли прирост, ошиблись бы на 40% (749 vs 1256).

Как проще: онлайн-калькуляторы и автоматизация

Ручной расчёт громоздкий. Используйте специализированные инструменты:

  • Калькулятор размера резервной копии — вводите исходный размер, тип данных, политику хранения, прирост — получаете итог с буфером.
  • Скрипты на Bash/Python с интеграцией в систему мониторинга (Zabbix, Prometheus). Пример на Python для подсчёта инкрементов:
    import shutil, os
    size_full = 100 # GB
    size_inc = 2 # GB
    count_inc = 7
    total = size_full + size_inc * count_inc
    print(f"Need {total*1.2:.1f} GB with buffer")

Для медиа-проектов также может пригодиться Изменить размер фото онлайн или Изменить размер видео онлайн — для оценки объёма исходников.

Частные случаи: шины, теплицы? Что общего?

Наш сайт — инструменты для разных задач. Если вам нужно рассчитать размер для шин или теплицы, держите ссылки: Калькулятор размера шин и Калькулятор размеров теплицы. Но вернёмся к бэкапам.

Для баз данных с индексами учитывайте, что размер индексов может превышать данные. В PostgreSQL VACUUM создаёт временные файлы до 20% от базы. Для виртуальных машин используйте дедупликацию — экономия 50-70%.

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Как рассчитать размер резервной копии базы данных?

Базовая формула: размер полного бэкапа плюс сумма инкрементов за период. Для MySQL используйте утилиту mysqldump --all-databases > backup.sql, затем сожмите gzip. Коэффициент сжатия для баз ~3:1. Пример: база 50 ГБ, сжатая ~17 ГБ. При еженедельных полных и ежедневных инкрементах по 2% от базы, на месяц нужно 17 + (7*1) = 24 ГБ с учётом сжатия.

Сколько нужно места для хранения бэкапов за месяц?

Зависит от политики. При ежедневных полных копиях с хранением 30 дней нужно 30 × размер_полной_копии. Но оптимальнее: полная раз в неделю (4 штуки) + инкременты (7×3=21). Тогда объём = 4×полная + 0.02×полная×21. Для базы в 100 ГБ (сжатие до 33 ГБ) это 4×33 + 0.33×21 ≈ 132+6.9 = 139 ГБ.

Формула расчёта размера полного бэкапа?

Размер полного бэкапа ≈ (размер данных) / (коэффициент сжатия) × (1 + 0.05 на метаданные). Для несжатой копии просто размер данных. Если данные на диске, используйте du -sh /data.

Как учесть прирост данных в расчёте резерва?

Используйте формулу сложного процента: итог = текущий_размер × (1 + ежемесячный_прирост)^количество_месяцев. Например, 100 ГБ с приростом 5% в месяц через 12 месяцев = 100 × 1.05^12 ≈ 179.6 ГБ. Затем рассчитайте бэкапы с этим прогнозом.

Какие существуют методы расчёта для больших объёмов?

Для объёмов >10 ТБ используют специализированное ПО: Veeam, Commvault. Они учитывают дедупликацию и инкременты. Также применяют прокси-расчёты: измеряют размер инкремента за неделю и экстраполируют. Бесплатный способ — использовать du и скрипты, но лучше купить софт.

Как рассчитать размер бэкапа с дедупликацией?

Дедупликация убирает дублирующиеся блоки. Коэффициент дедупликации для типичных данных 2:1, для VM с одинаковыми ОС до 10:1. Формула: размер_после_дедупликации = размер_данных / коэффициент_дедупликации. Пример: 100 ГБ, дедупликация 4:1 = 25 ГБ. Затем применяйте сжатие.

Почему фактический размер резерва отличается от расчётного?

Частые причины: путая ГБ и ГиБ (разница 7%), не учтённая служебная информация файловой системы (5%), нелинейный прирост данных, неодинаковое сжатие разных типов. Рекомендуется делать тестовый бэкап и сравнивать.

Какой минимальный размер диска для бэкапов?

Правило: минимум вдвое больше расчётного объёма данных, чтобы оставалось место на дефрагментацию и реорганизацию. Если расчётный объём 500 ГБ, берите диск на 1 ТБ с учётом правила 3-2-1 — три таких диска. Итого 3 ТБ.

Источники и нормативные документы

  1. MySQL Backup and Recovery Documentation
  2. Veeam Backup Best Practices
  3. Wikipedia — 3-2-1 backup rule
  4. GNU Tar Manual (compression ratios)

Ещё по теме «IT и код»