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/
node_modules
tmp
Выводы
Мы показали вам, как использовать Rsync для копирования и синхронизации файлов и каталогов. Еще больше информации о Rsync можно найти на странице руководства пользователя Rsync .
Добавить комментарий