Використання rsync як сервер

Використання Rsync як сервер

Реалізація Rsync-сервера побудована наступним чином. Є окремий сервер куди будуть складатися всі бекапи. З цього сервера запускається по крону команда rsync з параметрами, яка реалізує коннект до віддалених машин в мережі. На всіх машинах працює Rsync-служба, в конфіги якої прописано які саме каталоги потрібно синхронізувати.

Налаштування Rsync - служби, на віддалених серверах

Правимо конфиг Rsync-сервера. Де шукати в різних дистрибутивах:

Тепер створимо файл вітання, файли для логів і пароля.

Увага! ВАЖЛИВО. Дуже важливі права доступу до файлу з паролем. Якщо права будуть відмінними від тих що потрібно, у вас не буде проходити аутентифікація.

Тепер додамо службу rsync в автоматичний запуск:

Тепер переходимо на сервер, куди будуть збиратися всі наші BackUp.

Налаштування Rsync - скрипта, на BAckUp - сервері

На Нашому BackUp - сервері створюємо директорії, куди будуть складатися всі наші резервні копії.

Тепер створюємо файл з паролем. За правилами хорошого тону, ховаємо його в / root /

Тепер робимо повну синхронізацію за допомогою такої команди.

Для автоматизації, я створив два файли /root/rsync_day.sh, який запускається по крону кожну годину, в ньому у мене синхронізується svn-репозиторій. І /root/rsync_night.sh - який запускається тільки вночі. У ньому у мене синхронізується / etc / / home / та інше. Кому що синхронізувати, вирішувати вам.

Детальний опис ключів rsync

# '- v # ', # '- verbose # 'Збільшення налагоджувальної інформації

# '- u # ', # '- update # 'Пропускати оновлення файлів, які новіше вихідних

# '- r # ', # '- recursive # 'Рекурсія в директоріях

# '- o # ', # '- owner # 'Зберегти власника (тільки під root)

# '- g # ', # '- group # 'Зберегти групу

# '- h # ', # '- human-readable # 'Висновок цифр в Новомосковскемом вигляді (КБ, Мб, Гб)

# '- t # ', # '- times # 'Зберегти дату зміни

# '- p # ', # '- perms # 'Зберегти права доступу

# '- delete-after # 'Видалити після. Якщо в основному місці був вилучений якийсь файл, або каталог, то після синхронізації в backup сервері, в каталозі він теж буде видалений - password-file Шлях, де знаходиться файл з паролем.

Обов'язково вкажіть ключ -v, --verbose, тоді в консоль вам буде виводитися вся інформація про процес. Якщо у вас налаштоване відсилання повідомлень службою ssmtp, то ви зможете отримувати листи з інформацією про те як відпрацював cron. І відповідно як пройшла синхронізація.

Переваги і недоліки

До недоліків можна віднести якусь несумісність rsync з svn-базами. Хто знає подробиці, можете описати.

Просте використання rsync

# '- v, --verbose # '- балакучість, виводить імена оброблюваних файлів;

# '- a, --archive # '- робота в режимі архівування, зберігаються права доступу і інформація про власників;

# '- H, --hard-links # '- зберігати жорсткі посилання, залишаючи їх на іншому кінці бекапа;

# '- x, --one-file-system # '- не виходити за межі поточної точки монтування;

# '- progress # '- показувати скільки відсотків залишилося до завершення і швидкість передачі;

# '- numeric-ids # '- не транслювати імена власника та групи в цифрові UID і GID, залишити на віддаленій стороні номера як є;

# '- delete # '- видаляти з резервної копії файли, яких вже немає на стороні джерела;

# '- exclude-from = asylum_backup.excludes # '- список файлів виключених з резервної копії, допускається використання масок, напірмер "htdocs / * / *. Jpg";

# '- delete-excluded # '- видаляти частини які вже є на стороні бекапа, але з'явилися в списку виключення;

# 'Root @ # '- під яким пользоателей осущестляются підключення;

# 'Asylum # '- ім'я хоста до якого здійснюється підключення;

# '/ Home / asylum / # '- директорія джерело, яку потрібно бекапіть;

# '/ Backup / rsync / asylum / _home_asylum.demo / # '- куди зберігати бекап;

Для визначення транспорту потрібно задати змінну

RSYNC_RSH "ssh -c arcfour -o Compression = no -x"

# 'Ssh # '- транспорт ssh (можна задати через "-e ssh");

# '- c arcfour # '- тип шифрування;

# '- o Compression = no # '- відключити стиск засобами ssh, rsync сам стискає дані;

# '- x # '- відключаємо X туннелінг;

Інші корисні опції:

# '- n, --dry-run # '- режим тестування, реально ніяких дій з копіювання не проводиться, тільки емуляція;

# '- c, --checksum # '- використання звірки по контрольних сумах, а не за часом зміни і розміром;

# '- S, --sparse # '- допускає оптимізацію дискового простору через створення "дірявих" файлів;

# '- delete #' відрізняється від # '- delete-after # 'Тим, що видалення проводиться спочатку, а не на завершальній стадії процесу бекапа. # '- delete-after # 'Працює швидше, так як не вимагає зайвої стадії обходу списку файлів, але вимагає використання опції # '- force # 'Для обробки таких ситуацій як видалення файлу і поява ДИРЕТОР з тим же ім'ям;

# '- T, --temp-dir = DIR # '- зберігати тимчасові файли в окремій ДИРЕТОР, а не в поточної;

# '- compare-dest = DIR # '- зберігати нові і змінені файли в окремій директорії, не чіпаючи на час копрірованія основну директорію призначення, в кінці - разом, шляхом перейменування, оновити вміст бекапа;

# '- link-dest = DIR # '- використовувати жорсткі посилання на файли в DIR, наприклад, для створення подоби снапшотов;

# '- bwlimit # '- обмеження пропускної здатності, щоб не забивати канал;

# '- max-delete # '- обмеження максимально числа видаляються за один раз файлів і каталогів;

# '- z, --compress # '- включити стиск переданих даних;

# '- A, --acls # '- зберігати не тільки права доступу, але і ACL;

# '- D # '- зберігати файли пристроїв

# '- files-from = FILE # '- задати список директорій і файлів для бекапа в файлі;

# '- times # '- синхронізувати час модифікації файлів;

# '- backup # '- старі змінені або видалені файли не втрачаються а перейменовуються або переміщуються в задану чере # '- backup-dir = DIR # 'Директорію. Приклад інкрементального бекапа:

rsync споживає приблизно 100 байт на кожен файл в списку, тому при передачі величезного числа файлів до пам'яті потрібно ставитися акуратно;

Шаблон починається з # '/ #' Перевіряється з початку рядка, інакше з кінця;

Для завдання шаблону тільки для директорій потрібно вказати в кінці # '/ #';

Якщо необхідно виключити всі піддиректорії в / dir, крім / dir / best, до списку винятків потрібно помістити: