JavaRush /Курси /Docker SELF /Резервне копіювання з використанням rsync і scp

Резервне копіювання з використанням rsync і scp

Docker SELF
Рівень 6 , Лекція 5
Відкрита

1. Чому резервне копіювання важливе?

Сьогодні ми поговоримо про одну з найважливіших задач для всіх, хто працює у світі IT та програмування — резервне копіювання даних. Якщо ти коли-небудь втрачав важливі дані через збій диска або помилку, то знаєш, наскільки це критично. А якщо ні — ми тут, щоб цього уникнути!

Уяви: ти працював над проєктом кілька місяців, і одного чудового дня твій жорсткий диск вирішив страйкувати. Так, це так само вибиває з колії, як забути додати крапку з комою в кінці SQL-запиту, тільки в тисячу разів гірше. Системи бувають ненадійними, люди роблять помилки, а файли губляться. Резервне копіювання дозволяє заздалегідь підготуватися до таких неприємних сюрпризів.

У Linux для резервного копіювання є кілька потужних інструментів. Сьогодні ми познайомимося з двома з них: rsync та scp.


2. Команда rsync: швидкий і розумний інструмент для копіювання даних

rsync — це один з найпопулярніших інструментів для копіювання та синхронізації даних. Його головна сила у швидкості та ефективності. Замість того щоб копіювати все підряд, rsync копіює лише змінені файли. Це робить його ідеальним для регулярного резервного копіювання великих обсягів даних.

Синтаксис rsync

Ось базовий формат команди:

rsync [опції] джерело призначення

Де:

  • джерело — шлях до файлу або папки, які ви хочете скопіювати.
  • призначення — куди потрібно ці дані доставити.

Основні ключі та їхні функції

Ось кілька часто використовуваних опцій:

  • -a (archive): включає копіювання всіх метаданих (прав доступу, тимчасових міток та ін.).
  • -v (verbose): включає детальний вивід, щоб ви могли бачити, що відбувається.
  • --progress: показує прогрес копіювання (дуже зручно, якщо копіюєте великі файли).
  • --delete: видаляє на цільовій стороні файли, яких більше немає на вихідній стороні. Корисно для повної синхронізації.
  • -z (compress): стискає дані перед передачею, прискорюючи роботу (особливо важливо для мережевих операцій).

Приклад: копіювання локальних даних

Створимо каталог /backup для зберігання резервних копій.

mkdir /backup

Копіюємо весь вміст каталогу /home у /backup:

rsync -av /home /backup

Розберемо цей приклад:

  • -a зберігає структуру і права доступу до файлів.
  • -v дає інформацію про хід процесу.

Якщо ви виконаєте команду ще раз, вона скопіює лише змінені або нові файли.

Приклад: віддалене резервне копіювання

Тепер припустимо, що ви хочете відправити резервну копію на віддалений сервер. Для цього rsync підтримує використання SSH.

rsync -av /backup user@remote_server:/remote_backup

Де:

  • user — ім'я користувача на віддаленому сервері.
  • remote_server — адреса вашого віддаленого сервера (наприклад, IP-адреса або доменне ім'я).
  • /remote_backup — шлях на сервері, куди ви хочете зберегти дані.

Якщо у вас є SSH-ключ для авторизації, передача буде ще простіше (і безпечніше).


3. Команда scp: просто та ефективно

scp (Secure Copy Protocol) — це інструмент для копіювання файлів між локальною та віддаленою машинами. Він трохи простіший, ніж rsync, і підходить для випадків, коли повна синхронізація не потрібна.

Синтаксис scp

Ось як виглядає базовий формат команди:

scp [опції] джерело призначення

Де:

  • джерело — шлях до файлу, який ви хочете скопіювати.
  • призначення — адреса, куди його потрібно доставити.

Основні ключі та їх функції

Деякі корисні опції:

  • -r: рекурсивне копіювання для папок.
  • -C: стискає файли перед передачею.
  • -P: вказує порт SSH, якщо він відрізняється від стандартного (22).

Приклад: копіювання файлу на віддалену машину

Ви хочете передати файли з вашого локального комп'ютера на сервер. Припустимо, файл називається document.txt.

scp document.txt user@remote_server:/remote_folder

Якщо файл знаходиться у папці /home/user/documents, команда буде виглядати так:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

Тепер файл буде доступний на віддаленій машині у папці /remote_folder.

Приклад: копіювання файлів із сервера на локальну машину

Процес працює у зворотному напрямку:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

При цьому файл document.txt опиниться у вашій локальній папці.


4. Відмінності між rsync та scp

Хоча обидві команди дають змогу копіювати файли, у них є свої особливості.

Особливість rsync scp
Швидкість Тільки змінені дані, швидше для великих обсягів Копіює все, навіть якщо файл не змінений
Синхронізація Повна підтримка синхронізації Не підтримує синхронізацію
Стиснення даних Є -z Є -C
Простота використання Складніше в налаштуванні Простий інтерфейс

Отже, якщо тобі потрібно тільки швидко передати файл — використай scp. Якщо це про регулярну синхронізацію та великі обсяги даних — однозначно rsync.


5. Реальний приклад: налаштування резервного копіювання

Ось практичне завдання: ви хочете налаштувати повний процес резервного копіювання свого проєкту на віддалений сервер.

  1. Припустимо, ваші файли проєкту зберігаються в папці /home/user/project. Ви хочете, щоб вони резервувалися на сервері backup.server.com у папці /backups/project.

  2. Щоб копіювання відбувалося швидше, будемо використовувати rsync.

Налаштування скрипту резервного копіювання

Створіть файл backup.sh:

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# Виконуємо резервне копіювання за допомогою rsync
rsync -av --delete "$SOURCE" "$DESTINATION"

# Виводимо повідомлення про завершення
echo "Резервне копіювання завершено!"

Зробіть файл виконуваним:

chmod +x backup.sh

Тепер ви можете запускати цей скрипт вручну:

./backup.sh

Або додати його у cron для автоматичного виконання (про cron ми поговоримо пізніше на курсі).


6. Типові помилки та як їх уникнути

  1. Неправильні шляхи в командному рядку. Якщо вказати невірний шлях до файлів, rsync або scp нічого не скопіюють. Використовуйте команди ls або pwd, щоб переконатися в правильності шляхів.

  2. Відсутність ключа авторизації. Якщо при використанні SSH у вас немає налаштованого ключа, вас постійно запитуватимуть пароль. Налаштуйте SSH-ключі, щоб спростити процес.

  3. Переривання резервного копіювання. Якщо мережа нестабільна, rsync все одно завершить передачу при наступному запуску. А ось scp доведеться починати спочатку.

З використанням rsync та scp ви зможете впевнено копіювати та синхронізувати свої дані як на локальному комп'ютері, так і на віддалених серверах. Ці інструменти — ваші надійні помічники, коли йдеться про захист важливих файлів.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ