Команда Rsync в Linux с примерами

Команда Rsync для Linux

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 копировать файл

Пользователь, запускающий команду, должен иметь разрешения на чтение в исходном расположении и разрешения на запись в месте назначения.

Если имя файла не указано в поле назначения, файл будет скопирован с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в поле назначения:

 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/

Если вы не установили беспарольный вход по 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 внутри сеанса screen или использовать опцию -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/

/exclude-file.txt

 node_modules tmp

Заключение

Мы показали вам, как использовать Rsync для копирования и синхронизации файлов и каталогов. Подробнее о Rsync можно узнать на странице руководства пользователя Rsync .

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

rsync -терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *