
Щоб не вдаватись в теорію — відразу живий приклад.
Є декілька десятків гігабайт фотографій. Було б дуже шкода якби з ними щось сталося.
Краще зберігати їх копію на іншому вінчестері, бажано ще й на іншому комп’ютері, найкраще ще й в іншому приміщенні, віддалено.
Існує багато методів копіювання даних. Це може бути 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".