Використання 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, до списку винятків потрібно помістити: