Як використовувати rsync для резервного копіювання даних на Linux
rsync - це протокол, створений для Unix-подібних систем, що забезпечує неймовірну універсальність для резервного копіювання та синхронізації даних. Він може використовуватися локально для створення резервних копій файлів в різних каталогах або може бути налаштований для синхронізації через Інтернет з іншими хостами.
Він може бути використаний на системах Windows, але доступний лише через різні порти (наприклад, Cygwin), тому в цій інструкції ми будемо говорити про налаштування на Linux. По-перше, нам потрібно встановити / оновити rsync клієнт. На дистрибутивах Red Hat команда - "yum install rsync", а на Debian це "sudo apt-get install rsync".
Команда на Red Hat / CentOS, після входу в систему з правами root (зауважте, що деякі останні дистрибутиви Red Hat підтримують метод sudo).
Команда на Debian / Ubuntu.
Використання rsync для локальних резервних копій
У першій частині цього підручника ми створимо резервні копії файлів з Directory1 до Directory2. Обидва ці каталоги знаходяться на одному жорсткому диску, але це буде працювати точно так само, якщо каталоги існували на двох різних дисках. Існує кілька різних способів, до яких ми можемо підійти, залежно від того, які резервні копії потрібно налаштувати. Для більшості цілей достатньо наступного рядка коду:
$ rsync -av --delete / Directory1 / / Directory2 /
Наведений вище код синхронізує вміст Directory1 до Directory2 і не залишатиме відмінностей між ними. Якщо rsync виявить, що у Directory2 є файл, якого не містить Directory1, він видалить його. Якщо rsync виявить файл, який був змінений, створений або видалений у Directory1, він відображатиме ті самі зміни, що і для Directory2.
Є багато різних перемикачів, які можна використовувати для rsync, щоб персоналізувати його відповідно до конкретних потреб. Ось що говорить вищезгаданий код rsync для виконання резервних копій:
1. -a = рекурсивний (рекурсивний в директоріях), посилання (копіювати символічні посилання як символічні посилання), perms (збереження дозволів), часи (зберегти час модифікації), групу (зберегти групу), власника (зберегти власника), зберегти файли пристроїв і зберегти спеціальні файли.
2. -v = verbose. Причина, по якій я думаю, що важливо, так це те, що ви можете побачити, що саме rsync резервне копіювання. Подумайте про це: Що робити, якщо ваш жорсткий диск поганий, і починає видаляти файли без вашого відома, тоді ви запускаєте сценарій rsync і він виштовхує ці зміни до резервних копій, видаляючи таким чином всі екземпляри файлу, які ви не бажали позбутися?
3. -delete = Це повідомляє rsync видалити всі файли, які знаходяться в Directory2, які не є в Directory1. Якщо ви вирішили скористатися цією опцією, я рекомендую також використовувати детальні параметри з причин, зазначених вище.
Використовуючи сценарій, наведений вище, наведемо вихід, створений за допомогою rsync для резервного копіювання Directory1 до Directory2. Зауважте, що без детального перемикача ви не отримали б такої детальної інформації.
На скриншоті вище сказано, що файли File1.txt і File2.jpg були виявлені або як нові, або як інакше змінені з наявних у Directory2 копій, і тому вони були резервні. Порада Noob: зверніть увагу, що кінцеві риски в кінці каталогів у моїй команді rsync - необхідні, обов'язково запам'ятайте їх.
Ми перейдемо до декількох більш зручних перемикачів до кінця цього підручника, але пам'ятайте, що для перегляду повного списку ви можете ввести "man rsync" і переглянути повний список перемикачів для використання.
Це стосується місцевих резервних копій. Як ви можете сказати, rsync дуже простий у використанні. Він стає дещо складнішим при використанні його для синхронізації даних із зовнішнім хостом через Інтернет, але ми покажемо вам простий, швидкий і безпечний спосіб зробити це.
Використання rsync для зовнішніх резервних копій
rsync можна налаштувати декількома різними способами для зовнішніх резервних копій, але ми перейдемо до найбільш практичного (також найпростішого і найбезпечнішого) методу тунелювання rsync через SSH. Більшість серверів і навіть багато клієнтів вже мають SSH, і його можна використовувати для резервного копіювання rsync. Ми покажемо вам процес отримання однієї машини Linux для резервного копіювання в іншу локальну мережу. Процес буде точно таким же, якби один хост був десь в інтернеті, просто зауважте, що порт 22 (або будь-який порт, на якому ви налаштовані на SSH), потрібно буде пересилати на будь-якому мережевому обладнанні на стороні сервера.
На сервері (комп'ютері, який буде отримувати резервні копії) переконайтеся, що SSH і rsync встановлені.
# yum -y встановити ssh rsync
# sudo apt-get встановити ssh rsync
Крім встановлення SSH і rsync на сервері, все, що потрібно зробити, це налаштувати сховища на сервері, де потрібно створити резервні копії файлів, і переконатися, що SSH заблоковано. Переконайтеся, що користувач, яким ви плануєте користуватися, має складний пароль, а також може бути гарною ідеєю перемикати порт, який SSH слухає (за замовчуванням - 22)..
Ми виконуватимемо ту саму команду, що й для використання rsync на локальному комп'ютері, але включаємо необхідні доповнення для тунелювання rsync через SSH до сервера в моїй локальній мережі. Для користувача "geek", що підключається до "192.168.235.137" і використовує ті ж самі комутатори, що й вище (-av -delete), ми виконаємо наступне:
$ rsync -av -видалення -e ssh / Directory1 / [email protected]: / Directory2 /
Якщо у вас є SSH, який прослуховується на деяких портах, відмінних від 22, потрібно вказати номер порту, наприклад, у цьому прикладі, де я використовую порт 12345:
$ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /
Як видно з наведеного вище скріншоту, вихідний результат, створений під час резервного копіювання в мережі, майже такий же, як і під час резервного копіювання локально. Єдине, що змінюється, це команда, яку ви використовуєте. Зауважте також, що він запросив пароль. Це для автентифікації з SSH. Ви можете налаштувати ключі RSA, щоб пропустити цей процес, що також спростить автоматизацію rsync.
Автоматизація резервних копій rsync
Cron можна використовувати на Linux для автоматизації виконання команд, таких як rsync. Використовуючи Cron, ми можемо мати нашу систему Linux запускати нічні резервні копії, або ж часто ви хочете, щоб вони працювали.
Щоб відредагувати файл таблиці cron для користувача, з яким ви ввійшли, запустіть:
$ crontab -e
Щоб редагувати цей файл, потрібно знати програму vi. Введіть "I" для вставки, а потім почніть редагування файлу таблиці cron.
Cron використовує наступний синтаксис: хвилина години, година дня, день місяця, місяць року, день тижня, команда.
Спочатку це може бути трохи заплутаним, тому дозвольте мені навести приклад. Команда rsync виконуватиме кожну ніч у 10:00 наступну команду:
0 22 * * * rsync -av --видалення / Directory1 / / Directory2 /
Перша “0” вказує хвилину години, а “22” вказує на 10 вечора. Оскільки ми хочемо, щоб ця команда працювала щодня, ми залишимо решту полів зірочками, а потім вставимо команду rsync.
Після завершення налаштування Cron натисніть клавішу escape, а потім введіть “: wq” (без лапок) та натисніть enter. Це збереже ваші зміни у vi.
Cron може отримати набагато більше глибин, ніж це, але продовжувати це було б поза рамками цього підручника. Більшість людей просто хочуть простих щотижневих або щоденних резервних копій, і те, що ми показали, можна легко виконати. Докладніше про Cron див.
Інші корисні функції
Ще одна корисна річ, яку ви можете зробити, це помістити ваші резервні копії в zip-файл. Вам потрібно вказати, де ви хочете розмістити zip-файл, а потім rsync цього каталогу до каталогу резервної копії. Наприклад:
$ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av - видалення / ZippedFiles / / Directory2 /
Наведена вище команда приймає файли з Directory1, поміщає їх в /ZippedFiles/archive.zip, а потім rsyncs в цей каталог до Directory2. Спочатку ви можете подумати, що цей метод виявиться неефективним для великих резервних копій, враховуючи, що zip-файл змінюватиметься кожного разу, коли в файлі буде зроблено найменшу зміну. Однак rsync передає лише змінені дані, тому, якщо ваш zip-файл становить 10 ГБ, а потім додаєте текстовий файл до Directory1, rsync буде знати, що все, що ви додали (навіть якщо він знаходиться в zip) і передавати лише кілька кілобайт змінених даних.
Є кілька різних способів шифрування ваших резервних копій rsync. Найпростіший спосіб полягає в тому, щоб встановити шифрування на самому жорсткому диску (той, на якому зберігаються ваші файли). Іншим способом є шифрування файлів, перш ніж надсилати їх на віддалений сервер (або інший жорсткий диск, що б ви не підтримували). Ми розглянемо ці методи в наступних статтях.
Незалежно від обраних вами варіантів і функцій, rsync виявляється одним з найбільш ефективних і універсальних інструментів резервного копіювання на сьогоднішній день, і навіть простий скрипт rsync може врятувати вас від втрати даних.