Rsync настройка бекапа на centos

Існує багато способів організації backup на CentOS / Debian / Ubuntu серверах - безкоштовні утиліти, самописние скрипти з використанням tar, система бекапа bacula і багато іншого. Все це в тій чи іншій мірі я використовував або використовую у своїй роботі. Сьогодні я хочу з вами поділитися своїм методом організації простого, зручного та швидкого способу настройки інкрементного backup з використанням популярної утиліти rsync на серверах під управлінням CentOS / Debian / Ubuntu. Спосіб однаково працює на цих Истеми, невеликі відмінності тільки в самій установці rsync, про що я окремо згадаю для кожної системи.

Установка rsync на CentOS 6

Встановлюємо xinetd для автоматичного запуску rsync:

Встановлюємо безпосередньо rsync:

Редагуємо конфиг rsync для xinetd:

У конфіге знаходимо рядок disable = yes і міняємо на no:

І додаємо його в автозапуск:

Перевіряємо, чи слухає xinetd 873 порт rsync:

Все в порядку, можна приступати до налаштування rsync.

Установка rsync на CentOS 7

Додаємо в автозавантаження:

Перевіряємо, як запустився:

Все в порядку, можна приступати до налаштування rsync.

Установка rsync на Debian / Ubuntu

Знаходимо рядок RSYNC_ENABLE = false і міняємо на true:

Перевіряємо, що працює:

Все в порядку, можна приступати до налаштування rsync.

Налаштування rsync

Тепер приступаємо до налаштування. Логіка наших бекапов буде наступна. При першому запуску ми робимо повний бекап цікавить нас інформації в папку current. Потім раз на добу ми звіряємо наявний архів з джерелом і робимо його знову актуальним, переписуючи все змінені файли, але при цьому не видаляємо їх, а складаємо в папку increment. де кожен день створюється папка з ім'ям у вигляді дати, в яку складаються всі змінені файли за поточний день. Таким чином, у нас завжди буде повний архів, актуальний на момент останньої синхронізації, плюс набір папок за кожен день зі зміненими в цей день файлами. Скільки днів зберігати можна вибрати за потребою.

Виходить у нас така картинка:

Rsync настройка бекапа на centos

Приступаємо до реалізації. В першу чергу налаштовуємо rsync на серверах джерелах інформації, з яких ми будемо забирати дані для backup.

Створюємо файл конфігурації rsync:

Створюємо файл з обліковими даними для підключення:

де backup - ім'я користувача, 12345 - пароль.
Робимо права на читання тільки root. інакше rsync не запуститься:

Після настройки перезапускаємо rsync.
На Centos 6:

Тепер йдемо на сервер приймач, в якому будуть зберігатися архівні копії з серверів джерел. Там створюємо скрипт інкрементного бекапа c використанням rsync:

Робимо скрипт виконуваним:

Робимо права на читання тільки root, інакше rsync видасть помилку:
ERROR: password file must not be other-accessible
Виправляємо це:

На цьому все, тепер можна запускати скрипт і очікувати його виконання. Залишилося додати його в cron:

Я зазвичай створюю декілька скриптів для кожного сервера окремо. Потім поєдную їх запуск в одному загальному скрипті і вже його додаю в cron. А потім у міру необхідності редагую вже його, додаю або видаляю сервера.

Ротація логів rsync

Ми вказали в налаштуваннях ведення логу в файл /var/log/rsyncd.log. Необхідно налаштувати ротацію цього балки, щоб він не ріс до нескінченності. На великих файлових серверах він дуже швидко виросте до сотень мегабайт і більше.

Для цього створюємо в папці /etc/logrotate.d файл з конфігурацією ротації:

З такими настройками ротація відбуватиметься кожного разу, коли файл логу перевищить розмір в 500 кб. Зберігатися будуть 4 версії лог файлу. Ці настройки ви можете самі поміняти на свій розсуд.

Приклад бекапа windows сервера за допомогою rsync

Ще один приклад з моєї практики. Припустимо, у нас є windows сервер з деякою інформацією, яку ми хочемо так само бекапіть. Ніяких проблем, це робиться досить просто.

Створюємо на windows сервері мережеву кулі з інформацією. Створюємо користувача і додаємо його в доступ до цієї папки. Цього користувача ми будемо використовувати для підключення віндового кулі до linux сервера.

Монтуємо кулі з інформацією, яку будемо бекапіть:

Я в таких випадках створюю декілька скриптів: на монтування кулі, бекап і Демонтується, поєдную їх у один і запускаю послідовно. У підсумку виходить, що підключаємо диск, робимо бекап і відключаємо його.

Додаткові матеріали по CentOS

Судячи з того, що дані з current відлітають в increment, під час бекапа папка з даними не подмонтіровать, або вона з якоїсь причини порожня. Rsync вважає, що в папці порожньо і все, що було раніше, переміщує в папку increment. Це його нормальна поведінка при порожньому джерелі файлів. Копай в цю сторону.

Так, милицю нормальний 🙂 Більш правильно звичайно перевіряти сам факт, що потрібний ресурс змонтований. Я насправді так і роблю, тут стара версія, що не відображено це. Тут я все-таки більш універсальний підхід привів, без прив'язки до точок монтування. Вони можуть бути різними.

Схожі статті