Как передавать файлы с помощью Rsync через SSH

Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.

Самые популярные протоколы передачи данных — SSH и FTP . Хотя FTP очень популярен, всегда лучше использовать SSH, так как это наиболее безопасный способ передачи файлов.

Существуют специализированные инструменты для передачи файлов по SSH, такие как scp и sftp но ни один из них не обладает всеми функциями, которые предоставляет rsync . rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами и так далее.

В этом руководстве мы объясним, как копировать файлы с помощью rsync через SSH.

Требования

  • rsync необходимо установить как в целевой, так и в исходной системах. Если он не установлен, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива:

    Ubuntu и Debian:

     sudo apt install rsync

    CentOS и Fedora:

     sudo yum install rsync
  • SSH-доступ к удаленному компьютеру.

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

Использование rsync для передачи файлов по SSH

С помощью rsync вы можете передавать файлы и каталоги по SSH с удаленных серверов и на них.

Общий синтаксис передачи файлов с помощью rsync следующий:

Local to Remote: rsync [OPTION]... -e ssh [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... -e ssh [USER@]HOST:SRC... [DEST]

Где SRC — это исходный каталог, DEST — это целевой каталог. USER — это удаленное имя пользователя SSH, а HOST — это удаленный хост SSH или IP-адрес.

Новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить параметр -e ssh .

Например, чтобы передать один файл /opt/file.zip из локальной системы в каталог /var/www/ удаленной системы с IP 12.12.12.12 вы должны запустить:

rsync -a /opt/file.zip user@12.12.12.12:/var/www/

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

Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.

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

rsync -a /opt/file.zip user@12.12.12.12:/var/www/file2.zip

Чтобы передать данные с удаленного компьютера на локальный, используйте удаленное местоположение в качестве источника и локальное местоположение в качестве пункта назначения:

rsync -a user@12.12.12.12:/var/www/file.zip /opt/

Передача каталогов с помощью rsync через SSH аналогична передаче файлов.

Важно знать, что rsync разному обрабатывает исходные каталоги с завершающей косой чертой / . Если исходный каталог имеет косую черту в конце, rsync скопирует только содержимое исходного каталога в целевой каталог. Если опустить косую черту в конце, исходный каталог будет скопирован в целевой каталог.

Например, чтобы перенести локальный каталог /opt/website/images/ каталог /var/www/images/ на удаленном компьютере, вы должны ввести:

rsync -a /home/linuxize/images/ user@12.12.12.12:/var/www/images/

Используйте параметр --delete если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этого параметра, так как он удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.

rsync -a --delete /home/linuxize/images/ user@12.12.12.12:/var/www/images/

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22 , укажите порт с помощью параметра -e . Например, если SSH прослушивает порт 3322 вы должны использовать:

rsync -a -e "ssh -p 3322" /home/linuxize/images/ user@12.12.12.12:/var/www/images/

При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P который указывает rsync показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:

rsync -a -P /home/linuxize/images/ user@12.12.12.12:/var/www/images/

Выводы

Мы показали вам, как использовать rsync поверх SSH для копирования и синхронизации файлов и каталогов.

Вы также можете прочитать, как исключить файлы или каталоги с помощью rsync .

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

Оставьте комментарий