Модуль 30

Резервне копіювання та відновлення

Ось урок, створений спеціально для тебе у стилі CS50. Приготуй каву, вмикай мозок на повну — ми починаємо!


🎓 УРОК: Резервне копіювання та відновлення (Backups & Disaster Recovery)

1. 🔥 Вступ: Чому це (на жаль) стосується кожного?

Уявіть ситуацію. Ніч перед дедлайном. Ви дописуєте дипломну роботу, фінальний код проєкту або верстаєте звіт для клієнта. Очі печуть, кава холодна, але ви майже закінчили. І раптом...

Екран гасне. Або ви випадково проливаєте ту саму холодну каву на клавіатуру. Або жорсткий диск видає страшний звук "клік-клік-клік".

Запитання до вас: 1. Що ви відчуєте в цей момент? Паніку? Холодний піт? 2. Скільки годин (або місяців) вашого життя щойно зникло назавжди?

У світі IT ми кажемо: "Люди діляться на два типи: ті, хто ще не робить бекапи, і ті, хто ВЖЕ робить".

Сьогодні ми переведемо вас у другу категорію — категорію професіоналів, які сплять спокійно. Резервне копіювання — це не просто "копіювання файлів". Це ваша машина часу. Це єдиний спосіб повернутися в минуле і виправити фатальну помилку.

Як ми це робимо? Давайте розберемося, що там "під капотом".


2. 🧠 Теоретична база: Як працює "машина часу"?

Забудьте про складні терміни на хвилину. Уявіть, що ви пишете книгу.

Три стратегії копіювання (Аналогія з книгою)

  1. Повне (Full Backup):

    • Кожного вечора ви берете весь свій рукопис і робите ксерокопію кожної сторінки.
    • Плюс: У вас завжди є повна версія. Відновити легко — просто береш папку за вчора.
    • Мінус: Це довго і займає купу місця (паперу).
  2. Диференційне (Differential Backup):

    • У неділю ви робите повну копію. А в понеділок, вівторок, середу — копіюєте лише ті сторінки, які змінилися з моменту недільної повної копії.
    • Плюс: Швидше, ніж повне.
    • Мінус: Розмір зростає з кожним днем тижня.
  3. Інкрементальне (Incremental Backup):

    • Ви робите копію тільки того, що змінилося з моменту ОСТАННЬОЇ будь-якої копії. У вівторок копіюємо тільки зміни за понеділок. У середу — тільки зміни за вівторок.
    • Плюс: Максимальна економія місця і часу.
    • Мінус: Щоб відновити книгу, треба зібрати "пазл": повну копію + понеділок + вівторок + середу... Якщо одна ланка випаде — все пропало.

🔑 Золоте правило 3-2-1 (Обов'язково запам'ятати!)

Це мантра кожного адміна. Щоб ваші дані були в безпеці, у вас має бути: * 3 копії даних (одна робоча + дві резервні). * На 2 різних носіях (наприклад, жорсткий диск комп'ютера + зовнішній диск). * 1 копія повинна бути в іншому місці (у хмарі або в офісі в сейфі).

Чому? Бо якщо у вашій квартирі пожежа (не дай Боже) або крадіжка, то зовнішній диск, що лежить поруч із ноутбуком, зникне разом із ним.


3. 🧪 Приклади: Від папки до бази даних

Рівень 1: "Студентський" (Поганий приклад)

Ви пишете код і зберігаєте файли так: * project.py * project_final.py * project_final_V2.py * project_TOCHNO_FINAL_CEY.py

Чому це погано? Ви заплутаєтесь. Ви не знаєте, що саме змінилося між версіями. Це не бекап, це хаос.

Рівень 2: Система контролю версій (Git)

Ви використовуєте Git. Ви робите "коміти" (зрізи стану коду). * Це інкрементальний бекап логіки вашого коду. * Якщо ви запушили код на GitHub — ви виконали правило "1 копія в іншому місці".

Рівень 3: Бази даних (Реальний кейс)

Уявіть, що у вас є інтернет-магазин. Дані про замовлення лежать у базі даних (наприклад, PostgreSQL).

Як зробити бекап? Ми не можемо просто скопіювати файл бази, поки вона працює (це як міняти колесо автомобілю на ходу). Нам потрібен Дамп (Dump).

# Приклад команди для створення "знімка" бази даних
pg_dump my_shop_db > backup_2023_10_27.sql

Що тут відбулося? Ми сказали базі даних: "Гей, запиши всі інструкції SQL, які потрібні, щоб відтворити цю базу з нуля, у файл backup...sql".

Питання до вас: Якщо я зараз видалю базу даних, а потім запущу цей файл SQL — що станеться? (Пауза для роздумів) . . Відповідь: База відтвориться точно в тому стані, в якому вона була на момент створення файлу. Всі замовлення, які прийшли після створення дампа — втрачені. Це називається RPO (Recovery Point Objective) — скільки даних ми готові втратити.


4. 🛠 Практична частина

Час бруднити руки. Виконайте ці завдання, щоб відчути процес.

🔹 Завдання 1: Ручний бекап

  1. Створіть папку MyWork.
  2. Створіть там текстовий файл data.txt і напишіть туди "Важлива інформація 1".
  3. Зробіть архів цієї папки (zip) і назвіть його backup_v1.zip.
  4. Змініть текст у файлі на "Важлива інформація 1 + Нова ідея".
  5. Видаліть файл data.txt. Ой!
  6. Розпакуйте архів. Чи повернулась "Нова ідея"? (Ні, ви відкотились до версії 1).

🔹 Завдання 2: Правило 3-2-1 у реальному житті

Візьміть свій телефон. 1. Де ваші фото? (На телефоні). 2. Де копія? (Google Photos / iCloud?). Це "хмара". 3. Чи є третя копія? (На ноутбуці чи зовнішньому диску?). Якщо ні — ви не пройшли перевірку 3-2-1. Виправте це сьогодні.

🔹 Завдання 3: "А що, якщо..." (Mental Experiment)

Уявіть, що ваш ноутбук зашифрував вірус-вимагач. Він зашифрував і локальні файли, і підключений Google Drive (бо він був синхронізований як папка). * Завдання: Якби це сталось прямо зараз, звідки ви б дістали дані? * Підказка: Чи є у вас "холодний" бекап (диск, який лежить у шафі і не підключений до мережі)?


5. 💡 Мислення як у розробника

Як відрізнити новачка від сеньйора в цій темі?

⛔️ Помилка новачка: Він робить бекапи, але ніколи не пробує їх відновити.

Бекап Шредінгера: Стан резервної копії невідомий (працює чи ні), доки ви не спробуєте з неї відновитись.

🧠 Як думає профі: 1. Автоматизація: Люди забувають. Скрипти — ні. Бекап має робитися сам щоночі. 2. Тестування відновлення: Профі раз на місяць/квартал бере чистий сервер і пробує розгорнути там систему з бекапів. Якщо виникає помилка — він виправляє інструкцію, а не панікує під час реальної аварії. 3. Найгірший сценарій: Він завжди думає: "Що, якщо дата-центр згорить?". Тому він тримає копію в іншому регіоні (наприклад, сервер у Німеччині + бекап у США).


6. 🧩 Підсумок

Отже, друзі, що ми маємо у сухому залишку?

  1. Дані без бекапу — це тимчасові дані. Звикніть до цієї думки.
  2. Правило 3-2-1 — ваша страховка.
  3. Бекап без тесту відновлення — це просто файл, який займає місце, а не гарантія безпеки.

Тепер ви вмієте: * Розуміти різницю між повним та інкрементальним копіюванням. * Оцінювати ризики втрати даних. * Створювати стратегію порятунку свого цифрового життя.

🚀 Що далі?

Ви навчилися зберігати дані. Але що, якщо цей файл із бекапом потрапить до рук хакера? Він отримає ВСЕ. На наступному уроці ми поговоримо про Шифрування та Кібербезпеку. Як зробити так, щоб вашу "машину часу" могли запустити тільки ви?

А поки — зробіть бекап прямо зараз! Це було CS50 (style). До зустрічі! 👋