[Документация Yandex Cloud](../../index.md) > [Yandex Cloud Backup](../index.md) > [Концепции](index.md) > Политики резервного копирования

# Политики резервного копирования


{% note warning %}

Сервис Yandex BareMetal доступен только в [регионе Россия](../../overview/concepts/region.md).

{% endnote %}


Резервные копии [защищаемых ресурсов](index.md#protected-resources) создаются в Cloud Backup автоматически в соответствии с _политиками резервного копирования_.

[Создание](../operations/policy-vm/create.md) политик доступно после [активации](index.md#providers) сервиса Cloud Backup.

{% note info %}

Создать или [изменить](../operations/policy-vm/update.md) политику можно с помощью консоли управления Yandex Cloud, Terraform, а также задать по [спецификации](#specification) в формате [JSON](https://ru.wikipedia.org/wiki/JSON), используя [CLI](../../cli/quickstart.md) Yandex Cloud или API.

В консоли управления Yandex Cloud поддерживаются не все параметры из JSON-спецификации политик.

{% endnote %}

После активации автоматически создаются следующие политики резервного копирования:
* `Default daily` — ежедневное создание инкрементальной копии с сохранением последних 15 копий.
* `Default weekly` — еженедельное создание инкрементальной копии с сохранением последних 15 копий.
* `Default monthly` — ежемесячное создание инкрементальной копии с сохранением последних 15 копий.

По умолчанию защищаемые ресурсы Cloud Backup не связаны ни с одной политикой резервного копирования. Чтобы начать создавать резервные копии, [привяжите](vm-connection/index.md) ваш ресурс к одной или нескольким политикам.

В политике вы указываете:

* Тип создаваемых копий: полные или инкрементальные. Подробнее в разделе [Типы копий](backup.md#types).

  {% note info %}
  
  Если вы используете [политику](policy.md) с [опцией](policy.md#specification) быстрого резервного копирования `fastBackupEnabled` и перед созданием [инкрементальной копии](backup.md#types) выполнялась антивирусная проверка, время резервного копирования может значительно увеличиться. Подробнее в разделе [Взаимодействие с антивирусом](av-interaction.md).
  
  {% endnote %}

* Тип и настройки расписания:

    * `Фиксированное расписание` — периодичность создания копий в часах, днях, неделях или месяцах. Время указывается в часовом поясе [UTC±00:00](https://ru.wikipedia.org/wiki/UTC±00:00).
    * `Интервал между копированием` — интервал в часах или днях между завершением предыдущего копирования и началом нового.

* Настройки [хранения резервных копий](#retention).

{% note info %}

Резервные копии создаются по локальному времени, установленному на [защищаемом ресурсе](index.md#protected-resources). Возможно небольшое отставание от расписания в зависимости от текущей нагрузки на сервис.

{% endnote %}

## Хранение копий {#retention}

Для политики можно настроить хранение копий. Для каждого ресурса, привязанного к политике, могут храниться:

* Все копии, созданные по этой политике.
* Только последние несколько копий.
* Только копии младше определенного возраста, например созданные за последние несколько дней.

Настройки действуют на все защищаемые ресурсы, привязанные к политике.

{% note info %}

Восстановить резервную копию виртуальной машины на сервер или резервную копию сервера на виртуальную машину невозможно. При этом вы можете восстановить резервную копию [внешнего](vm-connection/external-resources.md) сервера на [сервер Yandex BareMetal](vm-connection/baremetal.md).

{% endnote %}

Если вы вносите изменения в правила хранения резервных копий, то по умолчанию они вступят в силу после создания очередной резервной копии. Подробное описание параметров настройки правил хранения резервных копий читайте в следующем разделе.

## Спецификация политики резервного копирования {#specification}

Политику резервного копирования в Cloud Backup можно [создать](../operations/policy-vm/create.md) или [изменить](../operations/policy-vm/update.md) по спецификации в формате [JSON](https://ru.wikipedia.org/wiki/JSON) с помощью [командной строки](../../cli/quickstart.md) Yandex Cloud или API-запроса.

Полная спецификация политики резервного копирования в Cloud Backup представлена ниже. Также актуальная версия спецификации доступна на странице [справочника REST API](../backup/api-ref/Policy/create.md).

```json
{
  "compression": "string",
  "format": "string",
  "multiVolumeSnapshottingEnabled": bool,
  "preserveFileSecuritySettings": bool,
  "runLater": bool,
  "sectorBySector": bool,
  "validationEnabled": bool,
  "lvmSnapshottingEnabled": bool,
  "fileFilters": {
    "exclusionMasks": [
      "string"
    ],
    "inclusionMasks": [
      "string"
    ]
  },
  "reattempts": {
    "enabled": bool,
    "interval": {
      "type": "string",
      "count": "string"
    },
    "maxAttempts": "string"
  },
  "silentModeEnabled": bool,
  "splitting": {
    "size": "string"
  },
  "vmSnapshotReattempts": {
    "enabled": bool,
    "interval": {
      "type": "string",
      "count": "string"
    },
    "maxAttempts": "string"
  },
  "vss": {
    "enabled": bool,
    "provider": "string"
  },
  "archive": {
    "name": "string"
  },
  "performanceWindow": {
    "enabled": bool
  },
  "retention": {
    "rules": [
      {
        "backupSet": [
          "string"
        ],
        "maxAge": {
          "type": "string",
          "count": "string"
        },
        "maxCount": "string",
      }
    ],
    "beforeBackup": bool
  },
  "scheduling": {
    "backupSets": [
      {
        "time": {
          "weekdays": [
            "string"
          ],
          "repeatAt": [
            {
              "hour": "string",
              "minute": "string"
            }
          ],
          "repeatEvery": {
            "type": "string",
            "count": "string"
          },
          "timeFrom": {
            "hour": "string",
            "minute": "string"
          },
          "timeTo": {
            "hour": "string",
            "minute": "string"
          },
          "monthdays": [
            "string"
          ],
          "months": [
            "string"
          ],
          "type": "string"
        },
        "sinceLastExecTime": {
          "delay": {
            "type": "string",
            "count": "string"
          }
        },
      }
    ],
    "enabled": bool,
    "maxParallelBackups": "string",
    "randMaxDelay": {
      "type": "string",
      "count": "string"
    },
    "scheme": "string",
    "weeklyBackupDay": "string"
  },
  "cbt": "string",
  "fastBackupEnabled": bool,
  "quiesceSnapshottingEnabled": bool,
  "prePostCommands": [
    {
      "cmd": "string",
      "args": "string",
      "enabled": bool,
      "stopOnError": bool,
      "type": "string",
      "wait": bool,
      "workdir": "string"
    }
  ]
}
```

Описание спецификации:

| Атрибут | Описание | Возможные значения |
|---|---|---|
| `compression` | Степень сжатия резервной копии. | <ul><li>`COMPRESSION_UNSPECIFIED` — не задано;</li><li>`NORMAL` — стандартное сжатие;</li><li>`HIGH` — сильное сжатие;</li><li>`MAX` — максимальное сжатие;</li><li>`OFF` — отключено.</li></ul> |
| `format` | Формат резервной копии. | <ul><li>`FORMAT_UNSPECIFIED` — не задано;</li><li>`VERSION_11` — устаревший формат, не рекомендуется его использовать.</li><li>`VERSION_12` — рекомендованный формат для быстрого резервного копирования и восстановления.</li><li>`AUTO` — автоматический выбор формата. По умолчанию используется версия 12. Исключение — создание инкрементальных копий для образов, созданных в других версиях.</li></ul> |
| `multiVolumeSnapshottingEnabled` | Делать резервные копии нескольких томов одновременно. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `preserveFileSecuritySettings` | Сохранять настройки безопасности файлов. **Параметр больше не поддерживается.** | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `runLater` | Если во время запланированного резервного копирования защищаемый ресурс был в статусе `Stopped`, все пропущенные задания резервного копирования выполнятся после запуска этого ресурса. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `sectorBySector` | Посекторное резервное копирование. Создает резервную копию всех секторов диска или тома, включая пустые области и нераспределенное пространство. Для дисков с неподдерживаемыми файловыми системами режим применяется автоматически. Данные приложений из такой копии восстановить нельзя. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `validationEnabled` | Проверка возможности восстановления данных из созданной резервной копии. При проверке для каждого доступного для восстановления блока вычисляется контрольная сумма, поэтому она может занимать длительное время. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `lvmSnapshottingEnabled` | Для создания моментального [снимка](../../glossary/snapshot.md) тома будет использоваться LVM. Если создать снимок с помощью LVM не удастся, он будет создан с помощью агента Cloud Backup. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `cbt` | Конфигурация отслеживания содержимого резервных копий Changed Block Tracking. | <ul><li>`CHANGED_BLOCK_TRACKING_UNSPECIFIED` — не задано;</li><li>`USE_IF_ENABLED` — использовать, если включено;</li><li>`ENABLE_AND_USE` — включить и использовать;</li><li>`DO_NOT_USE` — не использовать.</li></ul> |
| `fastBackupEnabled` | Быстрое резервное копирование — настройка отслеживания изменений в файлах. Когда включено, наличие изменений в файле определяется по его размеру и таймстампу. Когда выключено, для проверки наличия изменений содержимое файла сравнивается с содержимым, сохраненным в резервной копии. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
| `quiesceSnapshottingEnabled` | Использовать режим `quiescing` при создании резервных копий. **Параметр больше не поддерживается.** | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |

Секции атрибутов с несколькими вложенными значениями:

{% list tabs %}

- reattempts

  Настройка повторения операций резервного копирования в случае сбоев.

  | Атрибут | Описание | Возможные значения |
  |---|---|---|
  | `reattempts.enabled` | Повторять попытки создать резервную копию при возникновении некритических ошибок (например, при сбое подключения к целевому диску). | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
  | `reattempts.interval.type` | Единица времени для определения частоты повторения попыток. | <ul><li>`TYPE_UNSPECIFIED` — не задано;</li><li>`SECONDS` — секунды;</li><li>`MINUTES` — минуты;</li><li>`HOURS` — часы;</li><li>`DAYS` — дни;</li><li>`WEEKS` — недели;</li><li>`MONTHS` — месяцы.</li></ul> |
  | `reattempts.interval.count` | Длительность интервала между повторениями попыток. | Целое число. |
  | `reattempts.maxAttempts` | Максимальное количество попыток. При достижении максимального количества повторных попыток операция будет считаться неуспешной. | Целое число. |
  | `silentModeEnabled` | Режим «Не беспокоить». Сокращает количество взаимодействий с пользователем, когда это возможно. По умолчанию выключено. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
  | `splitting.size` | Разбить резервную копию на тома заданного размера в байтах. Если значение не задано, резервная копия сохранится одним файлом. | Целое число. |

- vmSnapshotReattempts

  Настройка повторения операций создания резервных копий в случае сбоев.

  | Атрибут | Описание | Возможные значения |
  |---|---|---|
  | `vmSnapshotReattempts.enabled` | Повторять попытки создать резервную копию при возникновении ошибок. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
  | `vmSnapshotReattempts.interval.type` | Единица времени для определения частоты повторения попыток. | <ul><li>`TYPE_UNSPECIFIED` — не задано;</li><li>`SECONDS` — секунды;</li><li>`MINUTES` — минуты;</li><li>`HOURS` — часы;</li><li>`DAYS` — дни;</li><li>`WEEKS` — недели;</li><li>`MONTHS` — месяцы.</li></ul> |
  | `vmSnapshotReattempts.interval.count` | Длительность интервала между повторениями попыток. | Целое число. |
  | `vmSnapshotReattempts.maxAttempts` | Максимальное количество повторных попыток. При достижении максимального количества повторных попыток операция будет считаться неуспешной. | Целое число. |

- vss

  Настройка службы теневого копирования томов VSS. Служба уведомляет приложения с поддержкой VSS о предстоящем начале резервного копирования. Приложения сохраняют информацию из памяти на диск, что обеспечивает целостность данных при копировании.

  | Атрибут | Описание | Возможные значения |
  |---|---|---|
  | `vss.enabled` | Включить VSS. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
  | `vss.provider` | Выбор VSS-провайдера. | <ul><li>`VSS_PROVIDER_UNSPECIFIED` — не задано;</li><li>`NATIVE` — нативный VSS-провайдер;</li><li>`TARGET_SYSTEM_DEFINED` — VSS-провайдер, заданный целевой системой.</li></ul>|
  | `archive.name` | Имя создаваемого архива. | Строка. Может содержать переменные: `[Machine Name]`, `[Plan ID]`, `[Plan Name]`, `[Unique ID]`, `[Virtualization Server Type]`. |
  | `performanceWindow` | Включить окно производительности для ограничения влияния резервного копирования и обслуживания хранилища на производительность. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |

- retention

  Настройка правил хранения резервных копий. Атрибуты `maxAge` и `maxCount` — взаимоисключающие. Использование одного делает невозможным использование другого.

  | Атрибут | Описание | Возможные значения |
  |---|---|---|
  | `retention.rules.backupSet` | Группа резервных копий, для которой задаются настройки хранения. | Строка. |
  | `retention.rules.maxAge.type` | Задать правило хранения резервных копий, при котором устаревшие копии будут удаляться в зависимости от их возраста в указанных единицах времени. | <ul><li>`TYPE_UNSPECIFIED` — не задано;</li><li>`SECONDS` — секунды;</li><li>`MINUTES` — минуты;</li><li>`HOURS` — часы;</li><li>`DAYS` — дни;</li><li>`WEEKS` — недели;</li><li>`MONTHS` — месяцы.</li></ul> |
  | `retention.rules.maxAge.count` | Максимальный срок хранения резервных копий в единицах времени, заданных атрибутом `maxAge.type`. | Целое число. |
  | `retention.rules.maxCount` | Задать правило хранения резервных копий, при котором устаревшие копии будут удаляться в зависимости от установленного максимального количества хранимых резервных копий. | Целое число. |
  | `retention.beforeBackup` | Применять правила хранения резервных копий до завершения операции резервного копирования. При создании политики по умолчанию или с помощью консоли управления задается правило `beforeBackup=false`. Настройки правил хранения резервных копий вступят в силу после создания очередной резервной копии. | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |

- scheduling

  Настройка расписания резервного копирования. Атрибуты `time` (по заданному времени) и `sinceLastExecTime` (с заданным интервалом между операциями) — взаимоисключающие. Использование одного делает невозможным использование другого.

  #|
  || **Атрибут** | **Описание** | **Возможные значения** ||
  || `scheduling.backupSets.`
  `time.weekdays` | Дни недели, в которые должно происходить копирование. Можно указать одновременно несколько значений, разделенных запятой. |
  * `DAY_UNSPECIFIED` — не задано;
  * `MONDAY` — понедельник;
  * `TUESDAY` — вторник;
  * `WEDNESDAY` — среда;
  * `THURSDAY` — четверг;
  * `FRIDAY` — пятница;
  * `SATURDAY` — суббота;
  * `SUNDAY` — воскресенье. ||
  || `scheduling.backupSets.`
  `time.repeatAt.hour` | Время для повторения копирования: часы. | Целое число от 0 до 23. ||
  || `scheduling.backupSets.`
  `time.repeatAt.minute` | Время для повторения копирования: минуты. | Целое число от 0 до 59. ||
  || `scheduling.backupSets.`
  `time.repeatEvery.type` | Единицы времени для определения частоты повторения операции резервного копирования. |
  * `TYPE_UNSPECIFIED` — не задано;
  * `SECONDS` — секунды;
  * `MINUTES` — минуты;
  * `HOURS` — часы;
  * `DAYS` — дни;
  * `WEEKS` — недели;
  * `MONTHS` — месяцы. ||
  || `scheduling.backupSets.`
  `time.repeatEvery.count` | Частота повторения операции резервного копирования в единицах измерения, заданных в атрибуте `repeatEvery.type`. | Целое число. ||
  || `scheduling.backupSets.`
  `time.timeFrom.hour` | Время начала временного интервала для копирования (от): часы. | Целое число от 0 до 23. ||
  || `scheduling.backupSets.`
  `time.timeFrom.minute` | Время начала временного интервала для копирования (от): минуты. | Целое число от 0 до 59. ||
  || `scheduling.backupSets.`
  `time.timeTo.hour` | Время окончания временного интервала для копирования (до): часы. | Целое число от 0 до 23. ||
  || `scheduling.backupSets.`
  `time.timeTo.minute` | Время окончания временного интервала для копирования (до): минуты. | Целое число от 0 до 59. ||
  || `scheduling.backupSets.`
  `time.monthdays` | День месяца, когда должно выполняться резервное копирование. Можно указать одновременно несколько значений, разделенных запятой. | Целое число от 1 до 31. ||
  || `scheduling.backupSets.`
  `time.includeLastDayOfMonth` | Выполнение резервного копирования в последний день месяца.

  {% note warning %}

  Если установлено значение `true`, параметр переопределяет другие настройки расписания: дни недели, дни месяца и т. д.

  {% endnote %}
  
  |
  * `true` — включено;
  * `false` — выключено.
  ||
  || `scheduling.backupSets.`
  `time.months` | Месяцы, в которые должно выполняться резервное копирование. Можно указать одновременно несколько значений, разделенных запятой. | Целое число от 1 до 12. ||
  || `scheduling.backupSets.`
  `time.type` | Периодичность копирования. |
  * `REPEATE_PERIOD_UNSPECIFIED` — не задано;
  * `HOURLY` — каждый час;
  * `DAILY` — ежедневно;
  * `WEEKLY` — еженедельно;
  * `MONTHLY` — ежемесячно. ||
  || `scheduling.backupSets.`
  `sinceLastExecTime.delay.type` | Единицы времени для определения интервала между операциями резервного копирования. |
  * `TYPE_UNSPECIFIED` — не задано;
  * `SECONDS` — секунды;
  * `MINUTES` — минуты;
  * `HOURS` — часы;
  * `DAYS` — дни;
  * `WEEKS` — недели;
  * `MONTHS` — месяцы. ||
  || `scheduling.backupSets.`
  `sinceLastExecTime.delay.count` | Длительность интервала между резервными копированиями в единицах времени, заданных атрибутом `delay.type`. | Целое число. ||
  || `scheduling.enabled` | Выполнение резервного копирования по расписанию. |
  * `true` — включено;
  * `false` — выключено. ||
  || `scheduling.maxParallelBackups` | Максимально допустимое количество одновременно запущенных процессов резервного копирования. Если не задано — без ограничений. | Целое число. ||
  || `scheduling.randMaxDelay.type` | Единицы времени для определения максимальной задержки между запуском параллельных задач. |
  * `TYPE_UNSPECIFIED` — не задано;
  * `SECONDS` — секунды;
  * `MINUTES` — минуты;
  * `HOURS` — часы;
  * `DAYS` — дни;
  * `WEEKS` — недели;
  * `MONTHS` — месяцы. ||
  || `scheduling.randMaxDelay.count` | Значение максимальной задержки между запуском параллельных задач в единицах времени, заданных атрибутом `randMaxDelay.type`. Задержка определяется случайным образом, но не превышает заданного здесь значения. | Целое число. ||
  || `scheduling.scheme` | Схема расписания резервного копирования. |
  * `SCHEME_UNSPECIFIED` — не задано;
  * `SIMPLE` — простая;
  * `ALWAYS_FULL` — всегда полная;
  * `ALWAYS_INCREMENTAL` — всегда инкрементальная;
  * `WEEKLY_INCREMENTAL` — еженедельно: инкрементальная;
  * `WEEKLY_FULL_DAILY_INCREMENTAL` — еженедельно: полная, ежедневно: инкрементальная;
  * `CUSTOM` — пользовательская;
  * `CDP` — Continuous Data Protection, непрерывная защита данных. ||
  || `scheduling.weeklyBackupDay` | День недели, в который будут выполняться еженедельные операции копирования. | Целое число от 1 до 7. ||
  |#

- fileFilters

  Настройка фильтров. Файлы и папки можно исключить из резервных копий или, наоборот, создавать резервные копии только конкретных элементов файловой системы.

  Чтобы включить или исключить файлы, добавьте критерии, которым они должны соответствовать, например, имена файлов, пути или маски. Поддерживаются подстановочные символы `*` и `?`. Каждый критерий указывается с новой строки. В критериях не учитывается регистр.

  Исключающий фильтр имеет преимущество над включающим.

  | Атрибут | Описание | Пример значения |
  |---|---|---|
  | `exclusionMasks` | Критерий для файлов, которые не будут включены в резервную копию. | `/tmp` |
  | `inclusionMasks` | Критерий для файлов, которые будут включены в резервную копию. | `/home/user*` |

- prePostCommands

  Настройка действий, которые Cloud Backup будет выполнять перед началом резервного копирования и после его завершения.

  | Атрибут | Описание | Пример значения |
  |---|---|---|
  | `cmd` | Команда или путь к исполняемому файлу, которые требуется выполнить (запустить). | `/usr/bin/myapp` |
  | `args` | Параметры командной строки, которые будут применяться при выполнении команды (запуске файла). | `-d -rw` |
  | `enabled` | Включить или выключить выполнение команды (запуск файла). | <ul><li>`true` — включено;</li><li>`false` — выключено.</li></ul> |
  | `stopOnError` | Остановить создание резервной копии при возникновении ошибки выполнения команды (запуска файла). | <ul><li>`true` — останавливать резервное копирование;</li><li>`false` — не останавливать резервное копирование.</li></ul> |
  | `type` | Момент выполнения команды (запуска файла). | <ul><li>`COMMAND_TYPE_UNSPECIFIED` — не задано;</li><li>`PRE_COMMAND` — выполнять команду (запускать файл) перед началом резервного копирования;</li><li>`POST_COMMAND` — выполнять команду (запускать файл) после завершения резервного копирования;</li><li>`PRE_DATA_COMMAND` — выполнять команду (запускать файл) непосредственно перед захватом данных (созданием снимка);</li><li>`POST_DATA_COMMAND` — выполнять команду (запускать файл) непосредственно после захвата данных (создания снимка).</li></ul> В каждую политику вы можете добавить не более одной команды каждого типа: `PRE_COMMAND`, `POST_COMMAND`, `PRE_DATA_COMMAND` и `POST_DATA_COMMAND`.<br><br>Команды `PRE_DATA_COMMAND` и `POST_DATA_COMMAND` выполняются максимально близко к моменту создания снимка, в отличие от `PRE_COMMAND` и `POST_COMMAND`, которые выполняются в начале и в конце всего процесса резервного копирования. |
  | `wait` | Дожидаться завершения выполнения команды (запуска файла), прежде чем запускать резервное копирование. | <ul><li>`true` — дожидаться завершения выполнения;</li><li>`false` — не дожидаться завершения выполнения.</li></ul> |
  | `workdir` | Рабочая директория выполнения команды (запуска файла). | `/etc/myapp/` |

{% endlist %}

## Примеры использования {#examples}

* [Автоматическая привязка политики резервного копирования Yandex Cloud Backup к ВМ](../tutorials/vm-with-backup-policy/index.md)


#### Полезные ссылки {#see-also}

* [Создать политику резервного копирования](../operations/policy-vm/create.md)
* [Привязать защищаемый ресурс к политике резервного копирования](../operations/policy-vm/attach-and-detach-vm.md)
* [Отвязать защищаемый ресурс от политики резервного копирования](../operations/policy-vm/detach-vm.md)
* [Изменить политику резервного копирования](../operations/policy-vm/update.md)
* [Получить информацию о политике резервного копирования](../operations/policy-vm/get-info.md)