rsync – утиліта, для синхронізації директорій і файлів між серверами за допомогою SSH.
Приклад синхронізації з каталогу dir1 в dir2:
rsync -progtv dir1/ dir2/
Де:
- -p — збереження прав;
- -r — рекурсивно;
- -o — зберегти власника (тільки під root);
- -g — зберегти групу;
- -t — зберегти дату зміни;
- -v — більше налагоджувальної інформації;
Синхронізація локального каталогу з віддаленим:
rsync -ave 'ssh -p 2222' 1.2.3.4:/home/username/ /home/username/
В даному прикладі ми вказуємо ключ a для архівації даних під час передачі і ключ e для передачі по SSH із зазначенням потрібного порту, в даному випадку це 2222.
Якщо потрібно бачити прогрес передачі файлів – додамо опцію –progress :
rsync --progress -ave 'ssh -p 2222' 123.123.123.123:/home/username/ /home/username/
Варто зазначити, якщо синхронізація йде між серверами – на віддаленому сервері так само повинен бути встановлений rsync.
Для простої передачі файлів з локальної папки на віддалений сервер використовуємо команду:
rsync -avz ./local_dir root@123.123.123.123:/home/username/dir
Наведемо кілька прикладів використання утилітиrsync.
Синхронізація директорійdir1 в dir2:
rsync -vur /path/to/dir1 /path/to/dir2
Даним способом будуть синхронізовані директорії, але при цьому видаляються файли з dir2, які зникли з dir1.
rsync -vurtm --delete --progress /path/to/dir1 /path/to/dir2
Архівація директорії виконується наступною командою:
rsync -avzur --delete --progress /path/to/dir1 /path/to/dir2
Виконуємо копіювання через SSH з сервера my.server.com з папки /path/to/dir в поточну директорію.
rsync --progress -v -e ssh root@my.server.com:/path/to/dir/* ./
Виконуємо копіювання через SSH на сервер my.server.com в папку /path/to/dir/ з поточної директорії.
rsync --progress -v -e ssh ./ root@my.server.com:/path/to/dir/*
Синхронізація директорій з обмеженням швидкості, вказується через параметр bwlimit в Kb/sec:
rsync -p -r -d -u -l -o -g -t -X --numeric-ids --delete --progress --bwlimit=3000 /dir1 /dir2
Щоб докладніше дізнатися про rsync використовуйте команду:
rsync --help