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/
0 комментариев