Введение
Rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и папки между двумя местоположениями в удаленной оболочке или из/в удаленный демон Rsync. Обеспечивает быструю добавочную передачу файлов, передавая только различия между источником и местом назначения.
Rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами и в качестве замены команд scp
, sftp
и cp
для повседневного использования.
В этом руководстве мы покажем вам, как использовать rsync
, на практических примерах и подробных объяснениях наиболее распространенных параметров rsync
.
Установить Rsync
Утилита rsync
предустановлена в большинстве дистрибутивов Linux и macOS. Вы можете проверить, установлен ли он в вашей системе, набрав:
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
настроены на использование 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
на экране или использовать параметр -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
и указать файлы и каталоги, которые вы хотите исключить из файла.
nano exclude-file.txt
node_modules
tmp
Следовательно:
rsync -a --exclude-from='/exclude-file.txt' /src_directory//dst_directory/
Вывод
В этом руководстве вы узнали, как использовать Rsync для копирования и синхронизации файлов и каталогов. На странице руководства пользователя Rsync можно узнать гораздо больше о Rsync.