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