Що таке rsync і як синхронізувати файли?
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: rsync — це інструмент командного рядка для копіювання та синхронізації файлів між каталогами або комп’ютерами. Під час наступних запусків він пропускає файли, які вважає незміненими, а під час передавання мережею може надсилати лише змінені фрагменти даних. Він корисний для оновлення копій даних і перенесення файлів на сервер, але звичайна синхронізація не замінює резервного копіювання зі збереженням історії версій.
Як працює rsync і чим відрізняється від звичайного копіювання?
rsync порівнює вказане джерело з місцем призначення та визначає, які файли потрібно передати. За замовчуванням він виявляє зміни передусім за розміром файлу та часом його останньої модифікації. Тож він не порівнює щоразу весь вміст кожного файлу.
Під час передавання мережею rsync може використовувати алгоритм різницевого передавання, тобто надсилати відсутні або змінені фрагменти замість усього наявного файлу. Однак перше копіювання до порожнього каталогу потребує передавання всіх вибраних даних. Під час локального копіювання rsync за замовчуванням передає повністю ті файли, які потребують оновлення, оскільки аналіз їхніх фрагментів не завжди дає перевагу.
Наприклад, на комп’ютері є каталог із фотографіями товарів, а на сервері — його копія. Після додавання п’яти фотографій наступний запуск rsync передасть нові файли, а не копіюватиме всю добірку знову. Проте видалення фотографії з джерела не видалить її автоматично з місця призначення — для цього потрібен окремий параметр.
Де можна користуватися rsync?
rsync широко використовують у Linux, він також доступний у macOS. У Windows ним можна користуватися, наприклад, через WSL — середовище, яке дає змогу запускати інструменти Linux. Перевірити наявність програми та її версію можна командою:
rsync --version
Якщо програми немає, установіть її за допомогою відповідного для вашої системи менеджера пакетів. Подробиці встановлення та доступні параметри шукайте в документації свого дистрибутива або конкретної версії програми.
Для типового передавання даних через SSH rsync має бути встановлений на обох комп’ютерах. SSH — це спосіб підключення до віддаленого комп’ютера із шифруванням з’єднання. Вам також потрібні обліковий запис із доступом до сервера та права на читання даних у джерелі й запис у місці призначення; самого доступу через SFTP не завжди достатньо.
Перша синхронізація крок за кроком
Основний синтаксис — rsync [parametry] dzherelo pryznachennia. Припустімо, ви хочете скопіювати вміст каталогу proiekty до наявного каталогу /mnt/backup/proiekty/. Спочатку виконайте пробний запуск без збереження змін:
rsync -av --dry-run --itemize-changes ~/proiekty/ /mnt/backup/proiekty/
Значення використаних параметрів:
-a— архівний режим: копіює підкаталоги, зберігає символічні посилання та основні метадані настільки, наскільки це дозволяють система й права доступу.-v— показує більше інформації про перебіг операції.--dry-run— імітує виконання без копіювання та видалення файлів.--itemize-changes— показує тип запланованих змін.
Перевірте, чи правильні шляхи та список змін. Якщо використовуєте зовнішній диск, також переконайтеся, що його змонтовано в потрібному місці. Потім запустіть справжнє копіювання:
rsync -av --itemize-changes ~/proiekty/ /mnt/backup/proiekty/
Коса риска в кінці шляху джерела змінює значення команди. Джерело ~/proiekty/ означає копіювання вмісту каталогу. Джерело ~/proiekty означає копіювання самого каталогу разом із його назвою — тому в наявному каталозі призначення може з’явитися додатковий рівень proiekty.
Режим -a не зберігає автоматично всі можливі властивості файлів. Наприклад, списки контролю доступу, розширені атрибути та зв’язки між жорсткими посиланнями потребують додаткових параметрів і підтримки з обох боків.
Як передати файли на сервер через SSH?
Щоб скопіювати вміст локального каталогу на сервер, можна скористатися наведеним нижче зразком. Замініть ім’я облікового запису, адресу сервера та шлях власними значеннями:
rsync -av -e ssh --dry-run ./sait/ korystuvach (at) serwer.example:/var/www/sait/
Параметр -e ssh визначає спосіб підключення. Перевіривши результат, приберіть --dry-run, щоб виконати передавання. Під час першого підключення перевірте відбиток ключа сервера за інформацією від адміністратора, а не приймайте його ідентичність без перевірки.
Щоб завантажувати файли із сервера, поміняйте місцями джерело та місце призначення: віддалений шлях має стояти першим. rsync працює в одному заданому напрямку — це не автоматична двостороння синхронізація, і він не розв’язує конфлікти між двома копіями, які редагували незалежно одна від одної.
Видалення файлів і обмеження резервного копіювання
Параметр --delete видаляє із синхронізованого каталогу призначення файли, яких немає в джерелі. Він корисний для створення дзеркальної копії, але помилка в шляху або порожнє джерело можуть призвести до втрати потрібних даних. Перш ніж використовувати його, завжди виконуйте пробний запуск із --dry-run --itemize-changes та перевіряйте заплановані видалення.
Навіть без --delete rsync може перезаписати попередню версію файлу. Він також не забезпечує самостійно узгодженої копії бази даних, що працює: для цього зазвичай потрібен експорт бази або механізм резервного копіювання, який надає її рушій.
Якщо дані потрібні для відновлення після помилки чи збою, заплануйте зберігання попередніх версій та окремої копії. Перший пробний запуск rsync виконайте на невеликому тестовому каталозі, а потім перевірте, чи можете відновити з копії вибраний файл.
Дивіться також: Що таке 2FA?
