Rsync для Linux: синхронізація, копіювання та резервне копіювання файлів
9 хв читання - 24 травня 2025 р.

Як використовувати rsync в Linux для інкрементного перенесення, віддаленої синхронізації по SSH, резервного копіювання за розкладом за допомогою cron та уникнення пастки кінцевої косої риски.
Rsync для Linux: як синхронізувати, копіювати та створювати резервні копії файлів як професіонал
Rsync — це стандартний інструмент для копіювання файлів між системами Linux. Він працює швидше, ніж cp або scp для будь-яких операцій, які ви виконуєте більше ніж один раз, відновлює дані після зривів мережі та передає лише те, що насправді змінилося. У цій публікації розглядається, що робить rsync, які прапори варто знати, приклади, до яких ви будете звертатися найчастіше, та як запланувати його за допомогою cron.
Що таке rsync?
Rsync — це утиліта командного рядка для копіювання та синхронізації файлів між різними локаціями. Вона працює локально, через SSH на віддаленому хості або з демоном rsync. Ключова відмінність від cp або scp: rsync спочатку порівнює джерело та місце призначення, а потім передає лише зміни. У каталозі розміром 100 ГБ, де змінилося 200 МБ, rsync переміщує 200 МБ. cp а scp переносять усе.
Вона входить до складу кожного сучасного дистрибутива Linux. Якщо її немає: apt install rsync або dnf install rsync.
Чому краще використовувати rsync, а не cp або scp
Три причини, чому rsync виграє у будь-якому нетривіальному копіюванні:
- Він інкрементний. Наступні запуски передають лише змінені байти, а не цілі файли. Для резервних копій та дзеркал це перетворює нічну роботу на кілька хвилин.
- Він витримує переривання. З
--partial, файл розміром 50 ГБ, переданий наполовину, відновлюється з того місця, де зупинився, а не починається спочатку. - Він зберігає метадані. Режим архівування (
-a) зберігає права доступу, власника, символічні посилання та часові мітки. Це критично важливо для системних файлів, дерев вихідного коду та всього, де атрибути мають значення.
Для одноразового копіювання невеликих файлів scp підійде. Для всього, що повторюється, вимагає великої пропускної здатності або може знадобитися відновлення, використовуйте rsync.
Поширені прапори rsync
Прапори, які вам дійсно знадобляться:
| Прапорець | Що робить |
|---|---|
-a | Режим архівування. Зберігає права доступу, власність, символічні посилання, часові мітки. Еквівалент -rlptgoD. |
-v | Verbose. Виводить список файлів, що передаються. |
-z | Стиснення під час передачі. Корисно для повільних або дорогих з'єднань, менш корисно в локальній мережі або для вже стисненого вмісту. |
-P | Поєднує --partial та --progress. Відновлення перерваних передач, відображення поточного прогресу. |
--delete | Видаляє файли у місці призначення, яких немає у джерелі. Необхідно для справжнього дзеркалу. |
--exclude | Пропускати файли, що відповідають шаблону. |
--exclude-from=FILE | Читати шаблони виключення з файлу. Чистіше, ніж ланцюгове використання багатьох --exclude прапорців. |
--dry-run | Показати, що сталося б, якби нічого не передавалося. |
--bwlimit=KBPS | Обмежити використання пропускної здатності в кілобайтах на секунду. Корисно для резервного копіювання, яке виконується у робочий час. |
--checksum | Порівнювати файли за контрольною сумою замість розміру та часу модифікації. Працює повільніше, але виявляє крайні випадки. |
-e ssh | Використовувати SSH для передачі. За замовчуванням у більшості сучасних установок. |
За замовчуванням порівнюються розмір файлу та час модифікації, що є швидким і майже завжди правильним. Перейдіть на --checksum , якщо процес розгортання перезаписує часові мітки без зміни вмісту або якщо ви підозрюєте пошкодження на рівні бітів.
Приклади Rsync
Копіювання каталогу локально:
rsync -av /source/path/ /destination/path/Синхронізація з віддаленим сервером через SSH:
rsync -avz /local/dir/ user@remote:/remote/dir/Проведіть пробний запуск, перш ніж робити щось руйнівне:
rsync -avz --dry-run /local/dir/ user@remote:/dir/Дзеркальне копіювання двох каталогів, включаючи видалення на місці призначення:
rsync -av --delete /source/ /destination/Виключення логів та тимчасового каталогу:
rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/Відновити великий перенос, який може бути перерваний:
rsync -avP user@remote:/backups/big.img /local/Якщо сесія SSH обривається, запустіть ту саму команду знову. З -P, rsync продовжить з того місця, де зупинився, замість того, щоб починати з нуля.
Обмежте пропускну здатність до 50 МБ/с для резервного копіювання в непіковий час, щоб не перевантажувати висхідний канал:
rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/Підступ з кінцевою косою рискою
Найпоширеніша помилка при використанні rsync:
rsync -av /source /destination/ # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/ # copies the CONTENTS of /source into /destinationКоса риска в кінці шляху до джерела означає «все, що знаходиться в цьому каталозі». Відсутність косої риски означає «сам цей каталог». Якщо ви не впевнені, запускайте спочатку з --dry-run першим, якщо ви не впевнені, особливо в поєднанні з --delete.
Автоматизація rsync за допомогою cron
Для запланованого резервного копіювання вам потрібні три речі:
Безпарольний доступ SSH до місця призначення. Задачі cron не можуть вводити паролі. Створіть ключ і скопіюйте його на хост резервного копіювання:
ssh-keygen -t ed25519 ssh-copy-id user@backup-hostСкрипт, а не однорядковий запис у crontab. Простіше тестувати, простіше вести журнал:
#!/bin/bash LOG=/var/log/rsync-backup.log rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1Зробіть його виконуваним за допомогою
chmod +x.Запис у cron для його запуску. Відредагуйте за допомогою
crontab -e:0 2 * * * /usr/local/bin/rsync-backup.shЦе запускає скрипт щоночі о 02:00.
Два вдосконалення, які варто внести в робочу версію: оберніть скрипт у flock , щоб довготривале завдання не перекривалося з запуском наступної ночі, та перенаправте вихідні дані через logger , щоб помилки потрапляли в системний журнал, де їх може виявити система моніторингу.
Заключні думки
Rsync — це один із небагатьох інструментів Linux, де час, витрачений на вивчення опцій, окупається майже миттєво. Основні моменти:
- Інкрементальні передачі та підтримка відновлення роблять rsync правильним вибором для будь-чого, що ви запускаєте більше ніж один раз
-aдля режиму архівування,-zдля стиснення,-Pдля відновлення та відстеження прогресу,--deleteдля справжніх дзеркал- Зверніть увагу на кінцеву косу риску в шляху до джерела, особливо з
--delete - Поєднайте це з cron та SSH-ключами для автоматичного резервного копіювання за розкладом
Для великих завдань резервного копіювання, що переміщують дані між об'єктами, запуск rsync на VPS з необмеженою пропускною здатністю означає, що вікна резервного копіювання не обмежуються лімітами на передачу даних.

Цифрова втома очей: як захистити зір у світі, де ми проводимо багато часу перед екранами
Цілий день дивитеся в екран? Дізнайтеся, як зменшити цифрове перенапруження очей за допомогою перевірених методів та інструментів. Цей посібник є незамінним для віддалених працівників, розробників та всіх, хто працює у сфері технологій.
4 хв читання - 21 травня 2025 р.
Чому важливо мати потужний VPS без обмежень трафіку
8 хв читання - 9 травня 2025 р.

Маєте запитання або потребуєте індивідуального рішення?
Гнучкі варіанти
Глобальне охоплення
Миттєве розгортання
Гнучкі варіанти
Глобальне охоплення
Миттєве розгортання