Перейти к содержимому

rsync — резервное копирование и синхронизация файлов и папок

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.

Как вы могли заметить, утилиты очень простая в использовании но в тоже время предоставляет широкий спектр возможностей при копировании и синхронизации файлов.