{% extends "admin/base.html" %} {% block page_title %}Резервне копіювання{% endblock %} {% block content %}

☁️ Резервне копіювання

{% if not is_sqlite %}
Автоматичне копіювання з цієї сторінки підтримується лише для SQLite. Для PostgreSQL налаштуйте pg_dump за розкладом (див. docs/DEPLOYMENT.md).
{% endif %}

Доступні копії ({{ backups|length }})

{% for b in backups %} {% else %} {% endfor %}
ФайлРозмірДата
{{ b.name }} {{ b.size_kb }} КБ {{ b.created_at.strftime('%d.%m.%Y %H:%M') }}
Завантажити
Резервних копій ще немає

Архіви фото товарів ({{ upload_archives|length }})

Фото створюються разом зі звичайним бекапом (кнопка «Створити резервну копію зараз» вище) і зберігаються окремо від бази — після відновлення бази обов'язково відновіть і найсвіжіший архів фото нижче, інакше картки товарів залишаться без зображень.

{% for b in upload_archives %} {% else %} {% endfor %}
ФайлРозмірДата
{{ b.name }} {{ b.size_kb }} КБ {{ b.created_at.strftime('%d.%m.%Y %H:%M') }}
Завантажити
Архівів фото ще немає

Резервні копії в хмарі (аварійне відновлення)

🔄 Показати бекапи в хмарі

Якщо цей сервер загублено чи зламано, а розгортання відбувається на новому — тут можна завантажити останню резервну копію бази і найсвіжіший архів фото з хмари назад на сервер, і одразу «Відновити» обидва вище, без ручної роботи з rclone.

{% if remote_list_error %}
{{ remote_list_error }}
{% elif remote_backups is not none %}
{% for b in remote_backups %} {% else %} {% endfor %}
ФайлТипРозмірДата
{{ b.name }} {{ '🖼 Фото' if b.kind == 'uploads' else '🗄 База' }} {{ b.size_kb }} КБ {{ b.mod_time.strftime('%d.%m.%Y %H:%M') if b.mod_time else '—' }}
У хмарі ще немає жодної резервної копії
{% endif %}

☁️ Автоматичні резервні копії (rclone)

{% if remote_last_at %}

Останній бекап: {{ remote_last_at.strftime('%d.%m.%Y %H:%M') }} — {% if remote_last_status == 'ok' %}успішно ✅{% else %}помилка: {{ remote_last_status }}{% endif %}

{% endif %}

Заповніть або «Сервісний акаунт», або «OAuth» нижче — не обидва одразу.

Сервісний акаунт — як налаштувати (крок за кроком)
  1. Відкрийте Google Cloud Console, створіть проєкт (або оберіть існуючий).
  2. Увімкніть Google Drive API для цього проєкту (APIs & Services → Library).
  3. Створіть сервісний акаунт: IAM & Admin → Service Accounts → Create Service Account.
  4. Відкрийте створений акаунт → Keys → Add Key → Create new key → JSON. Завантажиться файл.
  5. Відкрийте цей файл будь-яким текстовим редактором і вставте весь вміст у поле «Ключ сервісного акаунта» вище.
  6. У Google Drive створіть папку для бекапів, поділіться нею (Share) з email сервісного акаунта (поле client_email у JSON-файлі), давши права «Редактор».
  7. Скопіюйте ID папки з адресного рядка (частина після /folders/) у поле «ID папки» вище.
  8. Оберіть «Google Drive» вище, збережіть, натисніть «Перевірити підключення» — якщо все гаразд, спробуйте «Backup зараз».

OAuth (якщо вже маєте дані з rclone config)

OAuth — як налаштувати (крок за кроком)
  1. Встановіть rclone на своєму комп'ютері (не на сервері) — rclone.org/downloads.
  2. Запустіть rclone config, оберіть «New remote» → тип drive, погодьтесь на автентифікацію через браузер (увійдіть у свій Google-акаунт).
  3. Коли готово, відкрийте створений конфіг (шлях покаже сама команда, зазвичай ~/.config/rclone/rclone.conf) і скопіюйте значення client_id, client_secret, scope, token у поля вище.
  4. «Шлях до папки» — звичайна назва (не ID); можна лишити порожнім, і бекапи ляжуть у корінь «Мій диск» того акаунта, з яким ви увійшли.
  5. Збережіть, натисніть «Перевірити підключення».
Як налаштувати (крок за кроком)
  1. Створіть бакет у своєму провайдері (AWS S3, Backblaze B2, Wasabi, DigitalOcean Spaces тощо).
  2. Створіть ключ доступу (Access Key / Application Key) з правом запису в цей бакет.
  3. Для AWS S3 залиште поле «Endpoint» порожнім. Для інших провайдерів — вкажіть їхній S3-endpoint (є в панелі провайдера; для Backblaze B2 і подібних оберіть провайдера «Інше»).
  4. Заповніть Access Key ID, Secret Access Key, бакет — і збережіть.
  5. Натисніть «Перевірити підключення», потім «Backup зараз».
Як налаштувати (крок за кроком)

Для нетипових сховищ, не перелічених вище. Тип і назви параметрів беруться з документації rclone для конкретного сховища (наприклад, для SFTP: тип sftp, параметри host/user/pass). Кожен рядок у полі «Додаткові параметри» стає одним параметром конфігурації цього сховища.

⚠️ Відновити базу даних

Файл:
Поточний стан бази буде замінено вмістом цієї копії (перед цим автоматично створюється резервна копія поточного стану).

⚠️ Відновити фото товарів

Файл:
Фото з архіву буде розпаковано в папку завантажень поверх поточних (перед цим автоматично створюється резервна копія поточних фото).

{% endblock %}