Как использовать Rsync для локальной и удаленной передачи данных и синхронизации
Как использовать Rsync для локальной и удаленной передачи данных и синхронизации
How to Use Rsync for Local and Remote Data Transfer and Synchronization
В этом руководстве мы покажем вам, как использовать rsync на практических примерах и подробные объяснения наиболее распространенных вариантов rsync.

Rsync - это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и папки между двумя местоположениями через удаленную оболочку или из / в удаленный демон Rsync. Он обеспечивает быструю пошаговую передачу файлов, передавая только различия между источником и местом назначения.
Rsync может использоваться для зеркального отображения данных, добавочное резервного копирования, копирования файлов между системами и в качестве замены для scp
, sftp
и cp
команд для повседневного использования.
Установка Rsync
rsync
Утилита предварительно установлена на большинстве дистрибутивов и MacOS Linux. Вы можете проверить, установлен ли он в вашей системе, набрав:
rsync --version
rsync version 3.1.2 protocol version 31
Если вы не 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 -a /opt/filename.zip /tmp/

Пользователь, выполняющий команду, должен иметь разрешения на чтение в месте назначения и права на запись в месте назначения.
Пропуск имени файла из места назначения копирует файл с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в целевой части:
rsync -a /opt/filename.zip /tmp/newfilename.zip
В приведенном ниже примере мы создаем локальную резервную копию файлов нашего сайта:
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
команду внутри сеанса screen или использовать -P
параметр:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Исключить файлы и каталоги
При исключении файлов или каталогов вам необходимо использовать их относительные пути к исходному местоположению.
Есть два варианта, чтобы исключить файлы и каталоги. Первый вариант - использовать --exclude
аргумент и указать файлы и каталоги, которые вы хотите исключить, в командной строке.
В следующем примере мы исключая node_modules
и tmp
каталоги , которые расположены внутри src_directory
:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Второй вариант - использовать --exclude-from
аргумент и указать файлы и каталоги, которые вы хотите исключить из файла.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modules
tmp
Вывод
Из этого руководства вы узнали, как использовать Rsync для копирования и синхронизации файлов и каталогов. Еще много информации о Rsync можно найти на странице руководства пользователя Rsync .