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/

Чтобы передать данные с удаленного компьютера на локальный, используйте удаленное расположение в качестве источника:

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команду внутри сеанса экрана или использовать -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/