Перейти до змісту

Синхронізація з rsync

Передумови

Це все, що вам потрібно зрозуміти та дотримуватися цього посібника:

  • Машина під керуванням Rocky Linux.
  • Щоб було зручно змінювати конфігураційні файли з командного рядка
  • Знання того, як користуватися редактором командного рядка (тут ми використовуємо vi, але ви можете використовувати свій улюблений редактор).
  • Вам потрібен доступ root або привілеї sudo
  • Пари відкритих і закритих ключів SSH.
  • Можна створити сценарій bash за допомогою vi або вашого улюбленого редактора та протестувати його.
  • Можливість використання crontab для автоматизації виконання сценарію

Вступ

Використання rsync через SSH не настільки потужне, як lsyncd (що дозволяє спостерігати за змінами в каталозі чи файлі та підтримувати його синхронізацію в режимі реального часу), і не таке гнучке, як rsnapshot (який пропонує можливість резервного копіювання кількох цілей з одного комп’ютера). Однак це дозволяє оновлювати два комп’ютери за розкладом, який ви визначаєте.

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

Для цієї процедури ви працюватимете як користувач root. Або увійдіть як root, або скористайтеся командою sudo -s, щоб переключитися на користувача root у вашому терміналі.

Встановлення rsync

Хоча rsync, ймовірно, уже встановлено. Щоб переконатися, що rsync встановлено та оновлено, виконайте на обох комп’ютерах наступне:

dnf install rsync

Якщо пакет не встановлено, dnf попросить вас підтвердити встановлення. Якщо його вже встановлено, dnf шукатиме оновлення та запропонує встановити його.

Підготовка середовища

У цьому прикладі використовуватиметься rsync на цільовому комп’ютері для отримання з джерела замість надсилання з джерела до цільового. Для цього вам потрібно налаштувати пару ключів SSH. Після створення пари ключів SSH перевірте доступ без пароля від цільового комп’ютера до вихідного.

Параметри rsync і налаштування сценарію

Перш ніж продовжити налаштування сценарію, ви повинні вирішити, які параметри використовувати з rsync. Існує багато можливостей. Перегляньте посібник для rsync, щоб отримати повний список. Найпоширенішим способом використання rsync є використання параметра -a, оскільки -a, або «archive», поєднує кілька стандартних параметрів. Що включає -a?

  • -r, рекурсує каталоги
  • -l, підтримує символічні посилання як символічні посилання
  • -p, зберігає дозволи
  • -t, зберігає час модифікації
  • -g, зберігає групу
  • -o, зберігає власника
  • -D, зберігає файли пристрою

Єдині інші параметри, які вам потрібно вказати в цьому прикладі:

  • -e, визначає віддалену оболонку для використання
  • --delete, який говорить, що якщо в цільовому каталозі є файл, який не існує в джерелі, позбутися його

Далі встановіть сценарій на цільовому комп’ютері, створивши для нього файл (ще раз скористайтеся улюбленим редактором, якщо ви не знайомі з vi). Щоб створити файл, використовуйте цю команду:

vi /usr/local/sbin/rsync_dirs

Додайте вміст:

#!/usr/bin/env bash
/usr/bin/rsync -ae ssh --delete root@source.domain.com:/home/your_user /home

Замініть «source.domain.com» своїм доменним іменем, іменем хоста або IP-адресою.

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

chmod +x /usr/local/sbin/rsync_dirs

Тестування

Сценарії гарантують, що ви можете тестувати без занепокоєння.

Важливо

У цьому випадку припускається, що ваш домашній каталог не існує на цільовому комп’ютері. Якщо він існує, ви можете створити його резервну копію перед виконанням сценарію!

Запустіть скрипт:

/usr/local/sbin/rsync_dirs

Якщо все гаразд, ви отримаєте синхронізовану копію домашнього каталогу на цільовому комп’ютері. Переконайтеся, що це так.

Якщо припустити, що все спрацювало, створіть новий файл на вихідному комп’ютері у вашому домашньому каталозі:

touch /home/your_user/testfile.txt

Запустіть сценарій ще раз:

/usr/local/sbin/rsync_dirs

Переконайтеся, що цільовий комп’ютер отримав новий файл. Якщо так, наступним кроком є ​​перевірка процесу видалення. Видаліть файл, який ви щойно створили на вихідному комп’ютері:

rm -f /home/your_user/testfile.txt

Запустіть сценарій ще раз:

/usr/local/sbin/rsync_dirs

Переконайтеся, що файл більше не існує на цільовому комп’ютері.

Нарешті, створіть файл на цільовому комп’ютері, який не існує на вихідному:

touch /home/your_user/a_different_file.txt

Запустіть сценарій в останній раз:

/usr/local/sbin/rsync_dirs

Файл, який ви створили в цільовому файлі, більше не повинен існувати, оскільки він не існує в джерелі.

Якщо припустити, що все спрацювало належним чином, змініть сценарій, щоб синхронізувати всі потрібні каталоги.

Автоматизація всього

Можливо, ви не захочете запускати цей сценарій щоразу, коли хочете синхронізувати вручну. Використовуйте crontab, щоб зробити це автоматично за розкладом. Щоб запускати цей сценарій щовечора об 23:00:

crontab -e

Це підтягнеться і виглядатиме приблизно так:

# Відредагуйте цей файл, щоб представити завдання, які виконуватиме cron.
#
# Кожне завдання для запуску має бути визначено в одному рядку
# вказуючи різними полями, коли завдання буде запущено
# і яку команду виконати для завдання
#
# Щоб визначити час, ви можете надати конкретні значення
# хвилина (м), година (год), день місяця (дом), місяць (пн),
# і день тижня (dow) або використовуйте «*» у цих полях (для «будь-якого»).
#
# Зверніть увагу, що завдання будуть запускатися на основі системи cron
# поняття daemon про час і часові пояси.
#
# Вихідні дані завдань crontab (включаючи помилки) надсилаються
# електронним листом користувачу, якому належить файл crontab (якщо не перенаправлено).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Інформація

Приклад crontab показує порожній, але прокоментований файл. Коментар не з’являється на кожному комп’ютері та може бути порожнім файлом. На активному комп’ютері ви можете бачити інші записи.

crontab має 24-годинний формат. Вам знадобиться ваш запис у нижній частині цього файлу:

00 23   *  *  *    /usr/local/sbin/rsync_dirs

Це говорить про виконання цієї команди о 00 хвилин і 23 години щодня, кожного місяця та кожного дня тижня. Збережіть свій запис crontab за допомогою:

Shift+:+w+q+!

Додаткові прапори

-n : Виконати без проблем, щоб побачити, які файли будуть передані
-v : вивести список усіх файлів, які передаються
-vvv : надати інформацію про налагодження під час передачі файлів
-z : щоб увімкнути стиснення під час передачі

Висновки

Хоча rsync не такий гнучкий чи надійний, як інші інструменти, він забезпечує синхронізацію файлів, що завжди корисно.

Author: Steven Spencer

Contributors: Ezequiel Bruni, tianci li, Ganna Zhyrnova