Резервные копии по расписанию: каждый день или раз в неделю, все машины или отмеченные, хранятся последние N автокопий; копии делает служба virtuality-backup, а не панель
Этот коммит содержится в:
@@ -39,6 +39,53 @@
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<article class="card mt-3" id="schedule">
|
||||
<div class="card-header">
|
||||
<div class="row">
|
||||
<span class="vm-avatar">{{ icon('clock') }}</span>
|
||||
<div>
|
||||
<h2>Автоматические копии {{ badge('включены', 'success', cls='hide-sm') if schedule.enabled else badge('выключены', 'neutral', False, cls='hide-sm') }}</h2>
|
||||
{% if schedule.enabled %}
|
||||
<p>{{ schedule.when|capitalize }} · {{ 'все машины' if schedule.all_vms else schedule.vms|join(', ') }} · хранить {{ schedule.keep }} {{ plural(schedule.keep, 'последнюю копию', 'последние копии', 'последних копий') }}</p>
|
||||
{% else %}
|
||||
<p>Сервер может сам копировать машины каждую ночь или раз в неделю и удалять старые копии.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<a class="btn btn-sm" href="/backups/schedule">{{ icon('settings', 'icon-sm') }}{{ 'Изменить' if schedule.enabled else 'Настроить' }}</a>
|
||||
</div>
|
||||
{% if schedule.enabled or schedule.last %}
|
||||
<div class="list">
|
||||
{% if schedule.enabled %}
|
||||
<div class="list-item">
|
||||
<span class="list-icon brand">{{ icon('clock') }}</span>
|
||||
<div class="grow"><div class="title">Следующая копия: {{ schedule.next }}</div><div class="meta">Работающие машины на время копирования выключаются и потом запускаются снова</div></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if schedule.missed %}
|
||||
<div class="list-item">
|
||||
<span class="list-icon info">{{ icon('info') }}</span>
|
||||
<div class="grow"><div class="title">Копия {{ schedule.missed }} пропущена</div><div class="meta">В это время сервер был выключен, копия будет сделана в следующий раз</div></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if schedule.last %}
|
||||
{% set last = schedule.last %}
|
||||
<div class="list-item">
|
||||
<span class="list-icon {{ 'info' if last.running else 'danger' if last.failed else 'success' }}">{{ icon('activity' if last.running else 'triangle-alert' if last.failed else 'circle-check') }}</span>
|
||||
<div class="grow">
|
||||
<div class="title">
|
||||
{% if last.running %}Идёт копирование по расписанию {{ last.when }}: готово {{ last.count }}
|
||||
{% elif not last.count %}Запуск {{ last.when }}: машин для копирования не было
|
||||
{% else %}Запуск {{ last.when }}: скопировано {{ last.ok }} из {{ last.count }} {{ plural(last.count, 'машины', 'машин', 'машин') }}{% endif %}
|
||||
</div>
|
||||
{% for item in last.failed %}<div class="meta"><strong>{{ item.vm }}</strong>: {{ item.message }}</div>{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</article>
|
||||
|
||||
{% if groups %}
|
||||
<div class="stack mt-3">
|
||||
{% for g in groups %}
|
||||
@@ -75,7 +122,7 @@
|
||||
<article class="card">
|
||||
<div class="card-body stack-sm">
|
||||
<div class="row">{{ icon('info') }}<h3>Как это работает</h3></div>
|
||||
<p class="muted small">Работающая машина на время копирования аккуратно выключается и потом запускается снова. При восстановлении машина создаётся выключенной: под новым названием — с новыми сетевыми адресами, чтобы не мешать оригиналу; при замене — с прежними. Копии хранятся в папке <code>/var/lib/virtuality/backups</code>.</p>
|
||||
<p class="muted small">Работающая машина на время копирования аккуратно выключается и потом запускается снова. При восстановлении машина создаётся выключенной: под новым названием — с новыми сетевыми адресами, чтобы не мешать оригиналу; при замене — с прежними. Копии хранятся в папке <code>/var/lib/virtuality/backups</code>. Копии по расписанию сервер удаляет сам, оставляя последние. Копии, сделанные вручную, лежат, пока вы их не удалите.</p>
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
Ссылка в новой задаче
Block a user