Синхронізація даних за допо­могою rsync

  у розділі Технічні теми 

I always backup everething

Щоб не вдаватись в теорію — відразу живий приклад.

Є декілька десятків гігабайт фотографій. Було б дуже шкода якби з ними щось сталося.

Краще зберігати їх копію на іншому вінчестері, бажано ще й на іншому комп’ютері, найкраще ще й в іншому приміщенні, віддалено.

Існує багато методів копіювання даних. Це може бути FTP, Windows-диск тощо.

В середовищі Linux кошерним ;) методом вважається rsync.

Про

Rsync — система копіювання даних, котра одночасно безпечна, надійна, швидка, та зручна.

Безпечна, бо може працювати навіть всередині SSH-тунелю.

Надійна, бо використовує спеціальні алгоритми для перевірки цілісності даних.

Швидка, бо крім можливості компресувати дані "на льоту" rsync передає файли частинами, а у випадку втрати зв’язку продовжує передачу з частини, що не дописалась.

Зручність використання rsync полягає в тому, що система може працювати як у режимі Клієнт-Сервер так і у режимі Клієнт-Клієнт.

Клієнт-Сервер

У режимі Клієнт-Сервер, на комп’ютері сервері запускається демон rsync, який примає з’єднання на певному TCP-порті. В такому випадку зєднання відбувається напряму, Між rsync-клієнтом та rsync-сервером.

Клієнт-Клієнт

У режимі Клієнт-Клієнт не потрібно навіть запускати накомп’ютерах жодних служб. Достатньо щоб з обидвох кінців rsync було просто встановлено. З’єднання між комп’ютерами відбувається через SSH, а rsync автоматично запускається на віддаленому кінці.

Приклад

Якщо до якогось сервера є доступ по SSH, то для синхронізації віддаленої директорії з локальною достатньо команди (для зручності один рядок розбито на декілька!):

rsync --progress --stats --human-readable --recursive --verbose --times \
-e ssh /home/user/Pictures/ \
user@HOST:/home/user/New_Pictures/

Тут використано:

  • --progress — відображати поступ кожного файлу

  • --stats — показати підсумкову статистику, після завершення

  • --human-readable — відображати цифри в зрозумілішому людям форматі

  • --recursive — обробляти піддиректорії

  • --verbose — показувати більше інформації

  • --times — зберігати час створення файлів, після копіювання

Все решта має бути зрозуміло й так.

Часто використовується опція -a, --archive — еквівалент -rlptgoD, швидкий в написанні варіант рекурсивної синхронізації зі зберіганням майже усіх атрибутів та спец. файлів.

Отже отримавши джерело та ціль rsync зробить копію директорії, переписавши лише ті файли які справді змінились. А якщо джерельний файл став не зовсім іншим, а просто, наприклад,  збільшився у об’ємі (до нього було дописано дані) то на віддалений сервер буде вантажитись лише різниця файлів.

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

Онлайн-документація для rsync, на англійській, розташована тут, або "man rsync".


Коментарі