
rsync — это быстрая и универсальная утилита командной строки для синхронизации файлов и каталогов между двумя расположениями через удалённую оболочку, а также между удалённым демоном Rsync и обратно. Она обеспечивает быструю инкрементную передачу файлов, передавая только различия между исходной и целевой папками.
Rsync можно использовать для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами, а также в качестве замены команд scp , sftp и cp .
В этой статье объясняется, как использовать rsync с помощью практических примеров и подробных объяснений наиболее распространенных параметров rsync .
Установка Rsync
Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если rsync не установлен в вашей системе, вы можете легко установить её с помощью менеджера пакетов вашего дистрибутива.
Установка Rsync в Ubuntu и Debian
sudo apt install rsync
Установка Rsync на CentOS и Fedora
sudo yum install rsync
Синтаксис команды Rsync
Прежде чем приступить к использованию команды rsync , давайте рассмотрим ее базовый синтаксис.
Выражения утилиты rsync имеют следующий вид:
Local to Local: rsync [ OPTION ] ... [ SRC ] ... DEST Local to Remote: rsync [ OPTION ] ... [ SRC ] ... [ USER@ ] HOST:DEST Remote to Local: rsync [ OPTION ] ... [ USER@ ] HOST:SRC... [ DEST ]
-
OPTION— Параметры rsync . -
SRC— Исходный каталог. -
DEST— Каталог назначения. -
USER— Имя удаленного пользователя. -
HOST— имя удаленного хоста или IP-адрес.
rsync предоставляет ряд параметров, управляющих поведением команды. Наиболее часто используемые параметры:
-
-a,--archive, режим архивации, эквивалентно-rlptgoD. Эта опция указываетrsyncрекурсивно синхронизировать каталоги, переносить специальные и блочные устройства, сохранять символические ссылки, время изменения, группы, владельца и разрешения. -
-z,--compress. Эта опция заставляетrsyncсжимать данные при их отправке на целевую машину. Используйте эту опцию только при медленном подключении к удалённой машине. -
-P, эквивалентно--partial --progress. При использовании этого параметраrsyncотображает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям. -
--delete. При использовании этой опцииrsyncудаляет ненужные файлы из целевого расположения. Это полезно для зеркалирования. -
-q,--quiet. Используйте эту опцию, чтобы отключить вывод сообщений, не связанных с ошибками. -
-e. Этот параметр позволяет выбрать другую удалённую оболочку. По умолчаниюrsyncнастроен на использование SSH.
Базовое использование Rsync
Самый простой вариант использования rsync — копирование одного файла из одного локального расположения в другое. Вот пример:
rsync -a /opt/filename.zip /tmp/

Пользователь, запускающий команду, должен иметь разрешения на чтение в исходном расположении и разрешения на запись в месте назначения.
Если имя файла не указано в поле назначения, файл будет скопирован с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в поле назначения:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Настоящая мощь rsync проявляется при синхронизации каталогов. Пример ниже показывает, как создать локальную резервную копию файлов веб-сайта:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Если целевой каталог не существует, rsync его создаст.
Стоит отметить, что rsync по-разному обрабатывает исходные каталоги, имена которых содержат косую черту ( / ). Если в имени исходного каталога есть косая черта, команда скопирует в целевой каталог только его содержимое. Если косая черта отсутствует, rsync копирует исходный каталог в целевой.
Использование rsync для синхронизации данных с/на удаленную
При использовании rsync для удалённой передачи данных он должен быть установлен как на исходном, так и на целевом компьютере. Новые версии rsync настроены на использование SSH в качестве удалённой оболочки по умолчанию.
В следующем примере мы переносим каталог с локальной машины на удаленную:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Если вы не установили беспарольный вход по SSH на удаленную машину, вам будет предложено ввести пароль пользователя.
Чтобы перенести данные с удаленного компьютера на локальный, используйте удаленное местоположение в качестве источника:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса screen или использовать опцию -P :
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Исключить файлы и каталоги
Существует два способа исключить файлы и каталоги. Первый — использовать аргумент --exclude и указать в командной строке файлы и каталоги, которые нужно исключить.
При исключении файлов или каталогов необходимо использовать их относительные пути к исходному местоположению.
В следующем примере показано, как исключить каталоги node_modules и tmp :
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Второй вариант — использовать опцию --exclude-from и указать файлы и каталоги, которые вы хотите исключить из файла.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modules tmp
Заключение
Мы показали вам, как использовать Rsync для копирования и синхронизации файлов и каталогов. Подробнее о Rsync можно узнать на странице руководства пользователя Rsync .
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Связанные руководства