rsync

rsync ( англ. Remote Synchronization ) - Програма для UNIX-подібних систем, яка виконує синхронізацію файлів і каталогів у двох місцях з минимизирования трафіку, використовуючи кодування даних при необхідності. Важливою відмінністю rsync від багатьох інших програм / протоколів є те, що дзеркалювання здійснюється одним потоком в кожному напрямку (а не по одному або кілька потоків на кожен файл). rsync може копіювати або відображати вміст каталогу та копіювати файли, опціонально використовуючи стиск і рекурсію.

rsyncd - демон, який реалізує протокол rsync. За замовчуванням використовує TCP порт 873.

Випущений під ліцензією GNU GPL, rsync є вільним програмним забезпеченням.


1. Алгоритм

Утиліта rsync використовує алгоритм, розроблений австралійським програмістом Ендрю Тріджеллом, для ефективної передачі структур (наприклад, файлів) по комунікаційних з'єднань в тому випадку, коли приймає комп'ютер вже має відмінну версію цієї структури.

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

Сервер, з яким синхронізуються, обчислює контрольні суми для кожного шматочка розміру S в своїй версії файлу, в тому числі перекриваються шматки. Це може бути ефективно підраховано через особливого властивості rolling checksum: якщо rolling checksum байт від n до n + S-1 дорівнює R, то rolling checksum байт від n +1 до n + S може бути порахована виходячи з R, байти n і байти n + S без необхідності враховувати байти, що лежать всередині цього інтервалу. Таким чином, якщо вже підрахована rolling checksum байт 1-25, то для підрахунку rolling checksum байт 2-26 використовується попередня контрольна сума і байти 1 і 26.


2. Застосування

rsync була створена як заміна для rcp і scp. Одним з перших застосувань rsync стало дзеркалювання або резервне копіювання клієнтських Unix-систем на центральний Unix-сервер з використанням rsync / ssh і звичайної облікового запису Unix. З планувальником завдань, таким як cron, можливо організувати автоматизоване засноване на rsync дзеркалювання по захищеному криптографічно каналу між багатьма комп'ютерами та центральним сервером.