Резервне копіювання з Rsync

Rsync це є інструмент для резервного копіювання і синхронізації файлів. (Це може бути запущена на різних портах * NIX).

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

У aptosid у Вас є різні можливості запускати процес синхронізації. Ви можете запускати rsync командою в терміналі, або встановити додаткові пакети з Debian Sid:

Для пакету DEB:
apt-get install luckybackup

Інтернет-сторінка luckybackup.

Інструкція використання в терміналі

У наступному розділі ми представляємо rsync, можливості цієї програми і кілька прикладів, як rsync може використовуватися з власним скриптом резервного копіювання.

rsync є програмою швидкого резервного копіювання і файлів. rsync при цьому обчислює змінені файли і каталоги з допомогою таких атрибутів, як величина або дата, внаслідок чого синхронізація може бути дуже швидкою. Дані архівуються перед копіюванням і розпаковуються в пункті призначення (коли явно встановити z-варіант). Це можна пояснити дуже просто:

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

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

rsync може копіювати файли з:
* локальної системи до локальної системи,
* локальної системи до віддаленної системи,
* віддаленої системі до локальної системі.

При цьому rsync використовує клієнт ssh, або Rsync-демон, які працюють на вихідній і на цільовій системі. У сторінки довідника rsync кажуть, якщо системи можуть зв'язуватися по SSH, SSH також може використовуватися для Rsync.

Обмеження з Rsync полягає в тому, що дані НЕ МОЖУТЬ копіюватися між 2 віддаленими (дистанційноми) системами. У цьому випадку Вам доведеться скопіювати дані з одного віддаленої системи, а потім перенести з Rsync на іншу.

Щоб пояснити це, розглянемо наступний приклад з 3 комп'ютерами:

neo – локальна система
morpheus – віддалена система
trinity – віддалена система

Кожен користувач знає ім'я іншого користувача, і rsync працює виключно на нео, локальній системі:

Ім'я користувача на нео є сuddles,
Ім'я користувача на Morpheus є tartie,
Ім'я користувача на трійці є taylar.

Метою є синхронізація каталогів / Головна / $ USER / Files:

neo:/home/cuddles/дані з morpheus та trinity,
morpheus:/home/tartie/дані з neo та trinity,
trinity:/home/taylar/дані з neo та morpheus.

Тепер виникає проблема, що Rsync не може бути застосований між 2 віддаленими комп'ютерами.

neo-> morpheus - з локальної на віддалену, вийде
neo-> trinity - з локальної на віддалену, вийде
morpheus-> neo - з віддаленої на локальну, вийде
trinity-> neo - з віддаленої на локальну, вийде
morpheus-> trinity - не можна, з віддаленої на віддалену
trinity-> morpheus - не можна, з віддаленої на віддалену

Щоб обійти це обмеження, чинимо як зазначено нижче:

morpheus --> trinity - стане: morpheus --> neo та neo --> trinity
trinity --> morpheus - стане: trinity --> neo та neo --> morpheus

Цей додатковий крок не змінює нічого в кінцевому підсумку. Проте, вказує на те, що:

Це обмеження з Rsync повинно бути враховано при плануванні процесу резервного копіювання.

Застосування імен хоста з іменами хоста в rsync.

Застосування імен хостів Нео, Морфеус, і трійця, замість IP-адрес, може дозволити зробити процес копіювання наочніше і Вам буде легше розібратися.

Для цього Ви повинні відредагувати / і т.д. / хостів і вставити імена хостів і йому належать IP-адреси. Таким чином у нашому прикладі файл / і т.д. / хостів буде виглядати так:

192.168.1.15	 neo
192.168.1.16	 morpheus
192.168.1.17	 trinity

Перший рядок переводить IP-адреса 192.168.1.15 на "neo", друга 192.168.1.16 на "morpheus" і третя 192.168.1.17 на "trinity". Після запису може використовуватися додатково ім'я хоста замість IP-адреси. Цей особливо зручно, якщо змінюються розподілені IP-адреси, наприклад, у "нео" з 192.168.1.15 на 192.168.1.25 Це полегшує роботу зі скриптами, так як вони в разі зміни IP-адрес не повинні змінюватися, а тільки файл / і т.д. / хостів.

Якщо у вас є всі ваші скрипти, які використовують IP-адресу, вам потрібно знайти їх всіх і замініти їх на нові адреси. Якщо з іншого боку Ваші скрипти використовують "name", все що потрібно зробити, це змінити / і т.д. / хост файл, щоб відобразити зміни, і всі ваші скрипти будуть працювати. Це може бути дуже зручно, коли у вас є багато віддалених з'єднаннан з іншими системами, або навпаки. "name" метод також робить ваші скрипти більш легким для читання,тому що ви не використовуєте IP-адресу а скоріше, впізнаване "name" пов'язане з IP-адресою.

Два способи використання rsync.

Перший спосіб - дані штовхають (push) на цільову машину, другий - дані витягуються-(pull) з джерела. Кожен метод має свої за і проти, які будуть розглянуті нижче. У нашому прикладі використовуються локальна та віддалена системи, щоб більш чітко пояснити термінологію.

“push” - локальна система несе вихідні каталоги і файли, метою є дистанційна система. Команда Rsync запускається на локальній системі і "штовхає" дані на цільову систему.

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

Hедоліки:
* Якщо скрипт використовується з синхронізацією через cron, то crontab-и повинні задаватися на кожній системі. При модифікації скрипта необхідно вносити відповідні зміни на кожній системі, при змінах календарного плану повинен змінюватися кожен crontab на кожному комп'ютері. Внаслідок цього адміністративне обслуговування стає дуже громіздким і заплутаним. * Процес резервного копіювання не можливо перевірити, чи був цільової розділ змонтований цільової системою. Якщо він не змонтований, процес резервного копіювання не відбудеться.

“pull” - віддалена система несе вихідні каталоги і файли, метою є локальна система. Команда Rsync запускається на локальній системі і "витягує" дані з вихідної системи.

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

Синтаксис Rsync (частина з "rsync man):
       rsync [OPTION]... SRC [SRC]... DEST

       rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

       rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

       rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST

       rsync [OPTION]... SRC

       rsync [OPTION]... [USER@]HOST:SRC [DEST]

       rsync [OPTION]... [USER@]HOST::SRC [DEST]

       rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
Робочі приклади команд rsync::
rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home

Пояснення складових частин цієї команди:

Джерело: (/ шлях / файл) morpheus:/home/tartie, метою є: / media/sda7/SysBackups/morpheus/home

Каталог /home/tartie (включаючи підкаталоги) буде збережений в / media/sda7/SysBackups/morpheus/home, що після rsync буде виглядати таким чином:

/media/sda7/SysBackups/morpheus/home/tartie...

Зверніть увагу, копіюється тільки каталог /tartie, вказаний в rsync / media/sda7/SysBackups/morpheus/home. "Джерело" вибирає тільки, звідки прибувають дані, а "Мета" вказує Rsync, куди повинні копіюватися дані з "джерела" він сприймає вже не /home/tartie, а просто / tartie,якого він направить в /media/sda7/SysBackups/morpheus/home. Ще один приклад

rsync [...] /home/user/data/files /media/sda7/SysBackups/neo

Тут буде копіюватися вихідний каталог / файли і все в ньому знаходяться каталоги і файли в цільову папку / media/sda7/SysBackups/neo / - а не в / media/sda7/SysBackups/neo/home/user/data/files.

На це необхідно звертати увагу при використанні резервного копіювання з rsync.

Explanation of the options:
  -a для способу з архівацією. manpage з цього приводу каже: "простіше кажучи, цей метод, для створення рекурсивного резервного копіювання та копіювання майже всіх атрибутів. 
   Не зберігаються тільки тверді посилання через складність процесу. Опція-a відповідає:-rlptgoD, що це означає:
  -R = rekursiv - копіювати підкаталоги і файли в них з "вихідного місця".
  -L = Links - символічні посилання відновлюються в пункті призначення.
  -P = права - права ідентичні з ними у вихідному місці.
  -T = тимчасової штамп - часовий штамп у вихідному місці ідентичний з ним.
  -Q = quiet - мінімальний висновок інформації. Більша кількість інформації отримують з опцією-v після опції-a. 
   Виконання без якої-небудь відповіді буде досягнуто без постановки опції-v.
  -O = власник - якщо rsync проводиться як root, власники вихідних файлів залишаються відповідним чином збереженими.
  -D = відповідає цим обом командам: - devices - specials
 - Devices = символьні файли і файли блочного пристрою будуть копіюватися в віддалену систему, щоб потім відновлюватися. Потрібно звернути увагу, що без опції - super, опція - devices не працює.
 - Specials = rsync копіює спеціальні файли як sockets і fifos.
 - G: групи зберігаються відповідно вихідним файлів.
  -E: зберігається атрибут "здійснимо".
  -V: для докладного виводу. Якщо подробиці не важливі, ця опція може бути опущена. Тим не менш, якщо необхідно бачити, що відбувається, ця опція дуже корисна.
  -Z: копійовані дані архівуються, що прискорює копіювальний процес, так як переміщений обсяг даних буде менше.
- Delete-after = цільові каталоги або цільові файли, яких більше немає в джерелі, видаляються після переміщення, а не перед цим. У разі проблем чи катастроф буде "after" використаний, "delete" запобігає використання зайвого простору більше непотрібними файлами і каталогами в пункті призначення.
- Exclude = вказує на файли або каталоги виключаються з копіювального процесу. У прикладі, - exclude = "* ~" були б ВСІ файли з закінченням "~" з процесу резервного копіювання виключені. 
  З однією опцією - exclude може передаватися тільки один аргумент, при більшій кількості аргументів виключення необхідно використовувати кілька опцій - exclude

Additionally, these are some other, useful command options:

-c - проводить подальші порівняльні перевірки, що вимагає великого часу. Так як rsync вже проводить порівняльні перевірки, ця команда не була інтегрована в - a через її надмірності, а також для економії часу. У цій опції, як правило, немає потреби.
- super - цільова система спробує проводити дії суперкористувача (root) (дивіться manpage)
- dry-run - тестовий запуск: просто показує, що має копіюватися. Ніякі файли не копіюються.

І наостанок, варіанти вказівки вихідних і цільових каталогів.

Зразкові команди:
rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home

Ця команда копіює всі каталоги та файли нижче від / home / tartie на систему "morpheus" і розміщує їх у цей каталог / media/sda7/SysBackups/morpheus/home. Структура каталогу tartie зберігається.

rsync -agEvz --delete-after --exclude=”*~” /home/tartie neo:/media/sda7/SysBackups/morpheus/home

Це - протилежна команда першого прикладу. Вона "рухає" каталог / home / tartie і його вміст у вказаний каталог системи "neo" - відзначимо, що систему розглядають як "віддалену (remote)", якщо ставиться ":" двокрапка перед шляхом.

rsync -agEvz --delete-after --exclude=”*~” /home/cuddles /media/sda7/SysBackups/neo/home

Це є процес резервного копіювання на локальному комп'ютері. Тут потрібно звертати увагу на те, що ніяке двокрапка не встановлено. Локальний каталог / home / cuddles копіюється на / media/sda7/SysBackups/neo/home на тому ж самому локальному комп'ютері.

rsync з багатьма опціями - exclude:

rsync -agEvz --delete-after --exclude=”*~” --exclude=”*.c” --exclude=”*.o” "/*" /media/sda7/SysBackups/neo

Ця команда копіює все з каталогу root локальної системи (всі каталоги і файли) на / media/sda7/SysBackups/neo - виключеними з цього є всі файли і каталоги, які закінчуються на "~", ". C" або ". O".

Нижче наведений приклад команди рsync повинний по можливості уникати помилок.Приклад rsync команди віддаленої системи з віддаленої системи:

rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie trinity:/home

Як вже згадувалося раніше в цьому документі, це є обмеження rsync.

Останній приклад команди, давайте подивимося, як rsync буде виглядати, якщо ми замінимо наші "системні імена" з IP-адреси

Перша команда встановлена ​​з методом імені хоста, другий з методом IP-адрес. Обидві команди ідентичні в своєму виконанні:

rsync -agEvz --delete-after --exclude=”*~” morpheus:/home/tartie /media/sda7/SysBackups/morpheus/home
Неможлива команда:
rsync -agEvz --delete-after --exclude=”*~” 192.168.1.16:/home/tartie /media/sda7/SysBackups/morpheus/home

Як було вже сказано, обмеження rsync в тому, що цією командою можна копіювати між 2 віддаленими комп'ютерами. На це ми б хотіли ще раз звернути увагу.

Ми сподіваємося, з цим маленьким керівництвом Вам буде легше приступити до використання rsync, це дуже вдала програма резервного копіювання.

Сторінка останний раз переглянута 14/08/2010 0100 UTC