Rsync — мощный инструмент облегчающий рутинную операцию создания резервных копий либо синхронизацию файлов и папок.
Важно отметить, что передача файлов выполняется в один поток, в отличие от других подобных программ, создающих отдельный поток для передачи каждого файла. Данная опция увеличивает скорость передачи и уменьшает задержки при передачи небольших файлов.
Основные возможности rsync
- Возможность поддерживать синхронизацию целых деревьев каталогов
- Можно сохранять символические ссылки, жесткие ссылки, владельцев и права файла, метаданные и время создания
- Не требует особых привилегий
- Передача файлов одним потоком
- Поддержка RSH, SSH в качестве транспорта
- Поддержка анонимного Rsyn
Установка rsync
Ubuntu / Debian
sudo apt-get install rsync
CentOS
yum install rsync
Синтаксис rsync
Синтаксис rsync выглядит следующим образом
rsync опции источник приемник
В качестве источника и приемника может выступать удаленная или локальная директория.
Опции rsync
-v — Выводить подробную информацию о процессе копирования;
-q — Минимум информации;
-c — Проверка контрольных сумм для файлов;
-a — Режим архивирования, когда сохраняются все атрибуты оригинальных файлов;
-R — Относительные пути;
-b — Создание резервной копии;
-u — Не перезаписывать более новые файлы;
-l — Копировать символьные ссылки;
-L — Копировать содержимое ссылок;
-H — Копировать жесткие ссылки;
-p — Сохранять права для файлов;
-g — Сохранять группу;
-t — Сохранять время модификации;
-x — Работать только в этой файловой системе;
-e — Использовать другой транспорт, например, ssh;
-z — Сжимать файлы перед передачей;
—delete — Удалять файлы которых нет в источнике;
—exclude — Исключить файлы по шаблону;
—recursive — Перебирать директории рекурсивно;
—no-recursive — Отключить рекурсию;
—progress — Выводить прогресс передачи файла;
—stat — Показать статистику передачи;
—version — Версия утилиты.
Пример синхронизации rsync
Рассмотрим пример синхронизации локальных файлов и папок
rsync -zvh file /backups/
Данная команда копирует файл с именем file в папку /backups/
rsync -zvh --progress file/backups/
Если добавить опцию —progress вы сможете увидеть прогресс копирование и сколько времени осталось до завершения операции копирования.
rsync -zvh /home/www /tmp/backups/
Синхронизация папок выполняется так же легко как и копирование файлы, вместо имени файла указываем путь до папки которую нужно синхронизировать.
rsync -avz /home/www/ [email protected]:/home/www/
Синхронизация на удаленных сервер выполняется по типу локальной, но в качестве приемника мы указываем имя пользователя, сервер и директорию в которую нужно произвести синхронизацию.
rsync -avz [email protected]:/home/www/ /home/www/
Обратная синхронизация файлов.
Синхронизация не всех файлов и папок
rsync -avz --include 'G*' --exclude '*' /home/www/ [email protected]:/home/www/
Опции include и exclude позволяют указать какие файлы нужно синхронизировать, а какие исключить. Опции работают не только с файлами но и с директориями. В примере выше указано, как скопировать только те файлы которые начинаются на букву G.
Как вы могли заметить, утилиты очень простая в использовании но в тоже время предоставляет широкий спектр возможностей при копировании и синхронизации файлов.