{% extends "base.html" %} {% from "_ui.html" import icon, badge, meter, empty, alert %} {% set page_title = 'Резервные копии' %} {% block page_header %} {% endblock %} {% block alerts %} {% if backup_message %}{{ alert('success', backup_message) }}{% endif %} {% if backup_error %}{{ alert('danger', backup_error) }}{% endif %} {% for op in running %}
{{ icon('activity') }}
{{ op.title }} — {{ op.progress|default(0) }}%{{ op.message }}
Следить
{% endfor %} {% endblock %} {% block content %}
Копий на сервере{{ icon('database', 'icon-sm') }}
{{ storage.count }}{{ plural(storage.count, 'копия', 'копии', 'копий') }}
{{ groups|length }} {{ plural(groups|length, 'машина', 'машины', 'машин') }}
Занято копиями{{ icon('hard-drive', 'icon-sm') }}
{{ storage.used }}
{{ meter(storage.used_pct, 'brand') }}
{{ storage.used_pct }}% места на диске сервера
Свободно для новых копий{{ icon('layers', 'icon-sm') }}
{{ storage.free }}
Перед копированием место проверяется автоматически
{{ icon('clock') }}

Автоматические копии {{ badge('включены', 'success', cls='hide-sm') if schedule.enabled else badge('выключены', 'neutral', False, cls='hide-sm') }}

{% if schedule.enabled %}

{{ schedule.when|capitalize }} · {{ 'все машины' if schedule.all_vms else schedule.vms|join(', ') }} · хранить {{ schedule.keep }} {{ plural(schedule.keep, 'последнюю копию', 'последние копии', 'последних копий') }}

{% else %}

Сервер может сам копировать машины каждую ночь или раз в неделю и удалять старые копии.

{% endif %}
{{ icon('settings', 'icon-sm') }}{{ 'Изменить' if schedule.enabled else 'Настроить' }}
{% if schedule.enabled or schedule.last %}
{% if schedule.enabled %}
{{ icon('clock') }}
Следующая копия: {{ schedule.next }}
Работающие машины на время копирования выключаются и потом запускаются снова
{% endif %} {% if schedule.missed %}
{{ icon('info') }}
Копия {{ schedule.missed }} пропущена
В это время сервер был выключен, копия будет сделана в следующий раз
{% endif %} {% if schedule.last %} {% set last = schedule.last %}
{{ icon('activity' if last.running else 'triangle-alert' if last.failed else 'circle-check') }}
{% if last.running %}Идёт копирование по расписанию {{ last.when }}: готово {{ last.count }} {% elif not last.count %}Запуск {{ last.when }}: машин для копирования не было {% else %}Запуск {{ last.when }}: скопировано {{ last.ok }} из {{ last.count }} {{ plural(last.count, 'машины', 'машин', 'машин') }}{% endif %}
{% for item in last.failed %}
{{ item.vm }}: {{ item.message }}
{% endfor %}
{% endif %}
{% endif %}
{% if groups %}
{% for g in groups %}
{{ icon('monitor') }}

{% if g.exists %}{{ g.vm }}{% else %}{{ g.vm }}{% endif %}{% if not g.exists %} {{ badge('машина удалена', 'warning', cls='hide-sm') }}{% endif %}

{{ g.count }} {{ plural(g.count, 'копия', 'копии', 'копий') }} · {{ g.size }}{% if not g.exists %} · машины больше нет на сервере, но её можно восстановить{% endif %}

{% if g.exists %}{{ icon('plus', 'icon-sm') }}Создать копию{% endif %}
{% with rows = g.backups, back = '/backups' %}{% include "_backup_rows.html" %}{% endwith %}
{% endfor %}
{% else %}
{{ empty('database', 'Копий пока нет', 'Откройте страницу машины, перейдите на вкладку «Резервные копии» и нажмите «Создать копию». Копирование идёт в фоне — страницу можно закрыть.', '/', 'К списку машин', 'monitor') }}
{% endif %}
{{ icon('shield-check') }}

Что входит в копию

Настройки машины (процессор, память, сеть, порядок загрузки) и все её диски целиком. Установочные образы (ISO) не копируются — они лежат отдельно в разделе «Образы ОС». Диски сжимаются, поэтому копия обычно меньше самой машины.

{{ icon('info') }}

Как это работает

Работающая машина на время копирования аккуратно выключается и потом запускается снова. При восстановлении машина создаётся выключенной: под новым названием — с новыми сетевыми адресами, чтобы не мешать оригиналу; при замене — с прежними. Копии хранятся в папке /var/lib/virtuality/backups. Копии по расписанию сервер удаляет сам, оставляя последние. Копии, сделанные вручную, лежат, пока вы их не удалите.

{% endblock %}