Content
- Детальніше про Rsync
- Можливості утиліти
- Коротке пояснення синтаксису
- Копіювання одного файлу в папку на віддаленому сховищі
- Копіювання папки в папку на віддаленому сховищі
- Копіювання вмісту локальної теки до теки на віддаленому сховищі
- Копіювання папки з віддаленого сховища в локальну папку сервера
- Копіювання вмісту папки з віддаленого сховища в папку локального сервера
- Копіювання вмісту теки з вилученням і/або включенням файлів
- Копіювати лише файли, які відрізняються від файлів у папці призначення
- Використання Rsync по SSH з нестандартним SSH-портом
Копіювання та резервне копіювання файлів і папок за допомогою утиліти Rsync
Детальніше про Rsync
Rsync - швидкий і універсальний інструмент для копіювання файлів і папок. Утиліта може копіювати дані як локально, так і на інші хости, включаючи хмарне сховище від Introserv.
Опції утиліти дозволяють контролювати багато аспектів копіювання та дзеркалювання даних.
Однією з головних особливостей є можливість стиснення даних під час надсилання, що дозволяє прискорити процес копіювання між серверами.
Ще однією перевагою є виключення при копіюванні ідентичних файлів. Тому копіюватися або передаватися будуть тільки різні файли, що, безсумнівно, заощадить час на синхронізацію великих каталогів.
Можливості утиліти
Розглянемо приклади використання Rsync для копіювання файлів і каталогів у віддалене хмарне сховище з Introserv за допомогою протоколу SSH. Важливо! Аналогічні команди, тільки із зазначенням цільового сервера, дозволять скопіювати каталоги і файли на будь-який віддалений сервер по SSH.
Розглянемо деякі основні опції утиліти, які будуть використовуватися найчастіше. Більш детальний список доступних опцій можна знайти в документації man( командаman rsync ):
-v - вивести детальну інформацію про процес
-c - перевіряти контрольні суми файлів
-q - мінімальна інформація
-a - режим архівування
-R - відносні шляхи
-y - не перезаписувати новіші файли
-b - створити резервну копію
-l - копіювати симпосилання
-L - копіювати вміст посилань
-H - копіювати тверді посилання
-g - зберегти групу
-p - зберегти права доступу до файлів
-t - зберегти час модифікації
-x - працювати лише у цьому ФС
-e - використовувати інший транспортний протокол (наприклад, ssh)
-z - стискати файли перед передачею
--delete - видалити файли, яких немає у джерелі
--exclude - виключити файли
--recursive - перебирати каталоги рекурсивно
--no-recursive - вимкнути рекурсію
--progress - показувати прогрес передачі файлів
--stat - показувати статистику передачі
--max-size - максимальний розмір файлу для передачі
--bwlimit - обмеження швидкості для передачі файлів
Коротке пояснення синтаксису
rsync -az --progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/
-az --progress опції, які вказують на необхідність архівування файлу, що передається, стиснення його перед передачею, а також виведення на екран прогресу копіювання;
/home/user/test.file - шлях до файлу і власне сам файл, який потрібно перенести;
boxxxx@boxxxxx.introserv.cloud: ресурс призначення (у нашому прикладі - хмарне сховище, але це може бути і віддалений сервер) boxxxx - ім'я користувача, після знаку @ - ім'я ресурсу або IP-адреса віддаленого сервера;
/віддалена_папка/ - це папка на віддаленому ресурсі. У нашому прикладі - у хмарному сховищі Introserv.
Копіювання одного файлу в папку на віддаленому сховищі
rsync -az --progress /home/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/
Вам буде запропоновано ввести пароль для підключення до сховища:
Введіть пароль і продовжуйте, ви побачите прогрес і швидкість передачі файлу:
Копіювання папки в папку на віддаленому сховищі
Зверніть увагу на скісні риски в рядках папки-джерела та папки-приймача. Відсутність скісної риски у вихідній папці вказує на те, що ми хочемо рекурсивно перенести локальну папку Desktop з усім її вмістом до папки remote_folder
rsync -azr --progress /home/user/Desktop boxxxx@boxxxx.introserv.cloud:/remote_folder/
Ви побачите, що папку і всі файли в ній буде перенесено:
Копіювання вмісту локальної теки до теки на віддаленому сховищі
Зверніть увагу на косу риску в кінці вихідної папки. Її наявність вказує на те, що утиліта повинна скопіювати вміст локальної папки в папку на віддаленому сховищі
rsync -avzr --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Ви побачите хід і швидкість копіювання:
Копіювання папки з віддаленого сховища в локальну папку сервера
За допомогою Rsync можна ініціювати копіювання папки з віддаленого сховища. Команда має такий вигляд:
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/
Ви побачите хід і швидкість копіювання віддаленої теки до теки на локальному сервері:
Копіювання вмісту папки з віддаленого сховища в папку локального сервера
Тут також варто звернути увагу на косу риску в кінці шляху до папки-джерела. Його наявність вказує на те, що потрібно скопіювати тільки вміст папки
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/
Копіювання вмісту теки з вилученням і/або включенням файлів
Утиліта дозволяє явно вказати, які файли потрібно перенести, а які виключити. Для цього скористайтеся опціями --include і --exclude.
rsync -azr --progress --include 'test.file' --exclude 'test.file2' /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Ви побачите, що буде передано лише один файл, вказаний опцією --include. Зверніть увагу, що опції include і exclude можна використовувати окремо одна від одної
Копіювати лише файли, які відрізняються від файлів у папці призначення
Щоб скасувати копіювання однакових файлів, слід скористатися опцією -c для перевірки контрольних сум файлів. Це дозволить виключити з процесу копіювання ті файли, які вже є у папці призначення
rsync -azrс --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Ви побачите, що до віддаленого сховища було скопійовано лише 3 файли, за винятком файлу test.odt, який вже знаходиться на віддаленому сховищі:
Використання Rsync по SSH з нестандартним SSH-портом
Для передачі файлів з/на сервер зі зміненим SSH-портом використовуйте опцію -e 'ssh -p номер_порту '
Команда для копіювання файлу на сервер, на якому порт SSH змінено на 44, матиме такий вигляд:
rsync -azrс --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/