Перейти до вмісту
Обрати мову:Українська

Резервні копії

Кожну ніч Kept робить один знімок restic: зашифрований паролем, який ви обираєте, дедуплікований (ніч без нових даних додає майже нічого) і відправлений у місце, яке не є власним диском сервера.

  • База даних, вивантажена з одного узгодженого моменту, з маніфестом кількості рядків кожної таблиці та дайджестом її даних, щоб відновлення могло довести, що повернулося рівно те, що було.
  • Файли (фото, квитанції, документи), коли вони зберігаються на диску сервера. За зберігання файлів у S3 їх там немає: див. нижче.
  • Читабельна копія кожної локації: вебсторінки, електронні таблиці, мініатюри та квитанції, які відкриваються у браузері лише за допомогою restic. Див. прочитайте свій інвентар лише за допомогою restic.

Ключі не в резервній копії. Зберігайте набір для відновлення в іншому місці.

Куди її можна відправити

Section titled “Куди її можна відправити”
Ціль Задається Репозиторій restic
Каталог: інший диск або мережевий ресурс NAS, змонтований на сервері KEPT_BACKUP_DIR (абсолютний, поза KEPT_DATA_DIR) <directory>/restic
Бакет, сумісний із S3: AWS або S3-кінцева точка іншого постачальника KEPT_BACKUP_S3_BUCKET та інші KEPT_BACKUP_S3_* restic/ під KEPT_BACKUP_S3_PREFIX
Сервер SFTP KEPT_BACKUP_SFTP (синтаксис sftp: restic), KEPT_BACKUP_SFTP_KEY_FILE, KEPT_BACKUP_SFTP_KNOWN_HOSTS розташування, яке ви задаєте

Задайте одну ціль. Краще інший комп’ютер або інший фізичний майданчик: каталог на тому самому диску, що й дані Kept, відхиляється, а сторінка статусу попереджає, коли ціль ділить диск із ними. Кінцеві точки S3 Backblaze B2 і Cloudflare R2 мають працювати, але їх не перевіряли. SFTP фіксує ключ хоста сервера з файлу known-hosts і з’єднується лише тоді, коли він збігається.

Адміністратори сервера задають ціль і пароль у Адміністрування → Резервні копії, через HTTPS, після підтвердження набору для відновлення. «Тест» перевіряє, чи Kept може відкрити (або створити) репозиторій; «Запустити зараз» одразу запускає її. Змінна середовища має пріоритет над екраном і показується там як заблокована, тож оператор може закріпити ціль у розгортанні.

Пароль має щонайменше 12 символів (KEPT_BACKUP_PASSWORD або задається на екрані). Без пароля резервної копії не буде: Kept ніколи не записує незашифровану резервну копію. Якщо втратити пароль, резервна копія буде нечитабельною, тому він є в наборі для відновлення.

Резервне копіювання виконується у воркері від імені власника бази даних, тож воркеру також потрібен KEPT_OWNER_DATABASE_URL. З Compose, compose.yaml уже передає кожну змінну KEPT_BACKUP_* з .env до Kept і до migrate (який робить знімок перед оновленням); розташований поруч compose.override.yaml додає логін власника, а для цілі-каталогу — монтування на обох:

services:
kept:
environment:
KEPT_OWNER_DATABASE_URL: postgres://kept_owner:${KEPT_DB_OWNER_PASSWORD:-}@db:5432/kept
KEPT_DB_OWNER_PASSWORD_FILE: /owner/kept_owner
volumes:
- kept-owner:/owner:ro
- /mnt/backup/kept:/backups
migrate:
volumes:
- /mnt/backup/kept:/backups

Пароль власника береться з тому kept-owner, де його зберігає початкове налаштування (інсталяція до 1.13.0 з KEPT_DB_OWNER_PASSWORD у .env використовує його замість цього, а рядок файлу нічого не робить).

Потім або задайте ціль і пароль на екрані, або заблокуйте їх у .env (KEPT_BACKUP_DIR=/backups, KEPT_BACKUP_PASSWORD=…).

Каталог має належати користувачу Kept:

Terminal window
sudo mkdir -p /mnt/backup/kept
sudo chown 10001:10001 /mnt/backup/kept
sudo chmod 700 /mnt/backup/kept
  • Коли: щоночі в час, заданий в Адміністрування → Резервні копії, HH:MM у UTC (типово 02:30). Новий час діє з наступної ночі, без перезапуску; KEPT_BACKUP_TIME замість цього фіксує його.
  • Запустити зараз одразу запускає одне копіювання; повторне натискання, поки воно чекає або виконується, відхиляється («Резервна копія вже виконується») замість того, щоб поставити в чергу вдруге. Резервна копія, перервана перезапуском або нестачею пам’яті, цього не блокує; наступний запуск позначає її перерваною.
  • На маленькій машині (менше ніж 4 ГБ або ліміт контейнера менше ніж 4 ГБ) restic запускається щонайбільше на двох ядрах з м’яким лімітом пам’яті; GOMAXPROCS і GOMEMLIMIT у середовищі Kept (з Compose, compose.override.yaml) перевизначають обидва.
  • Як довго їх зберігають: найновіший знімок з кожного з останніх 7 днів, 4 тижнів і 6 місяців (KEPT_BACKUP_KEEP_DAILY, _WEEKLY, _MONTHLY). KEPT_BACKUP_KEEP альфа-версії читається як щоденна кількість для одного випуску. Зі знімків, зроблених перед оновленням, зберігаються останні 3.
  • Підозріло мала резервна копія (дамп менше ніж половина розміру останньої доброї, або значно менше речей, місць чи файлів) усе одно роблять, але тієї ночі нічого старого не видаляють і попереджають адміністраторів, тож погана ніч ніколи не витіснить добрі знімки.

Адміністрування → Статус показує останню резервну копію та її вік, кількість знімків, розмір репозиторію, останнє тренування відновлення і диски. Адміністраторів попереджають поштою та push-сповіщеннями, коли:

Сповіщення Коли
Резервне копіювання не вдалося запуск завершується невдало
Резервна копія застаріла немає доброї резервної копії 36 годин за заданої цілі
Підозрілий розмір запуск був значно меншим за останню добру
Мало місця на диску диск даних або ціль-каталог заповнено на 85 %
Версіонування бакета вимкнено файли в S3, а бакет не зберігає старих версій
Час для тренування відновлення немає тренування відновлення 30 днів

/metrics (з KEPT_METRICS_TOKEN) додає час останньої доброї резервної копії та використання дисків. Див. моніторинг.

Коли файли зберігаються в S3

Section titled “Коли файли зберігаються в S3”

restic робить резервні копії файлів на диску, а не об’єктів у бакеті. З KEPT_STORAGE=s3 знімок містить базу даних, маніфест і читабельну копію, а бакет сам зберігає файли в безпеці: увімкніть версіонування бакета (і, якщо ваш постачальник її має, реплікацію в інший регіон). Kept перевіряє версіонування на кожному запуску і попереджає, поки воно вимкнене. Щотижнева перевірка і тренування відновлення порівнюють хеш кожного файлу в маніфесті з бакетом.

Резервні копії альфа-версії

Section titled “Резервні копії альфа-версії”

Резервні копії, зроблені до restic альфа-версією (runs/ і blobs/ поруч із новим каталогом restic/), більше не записуються і залишаються відновлюваними через kept admin restore --legacy <id> ще один випуск. Видаліть їх, щойно знімок restic пройде тренування відновлення.