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

How to Transfer Files with Rsync over SSH

4 Апреля 2020 | Терминал

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

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

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

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

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


Требования

  • 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 Опция означает архивный режим , который синхронизирует каталоги рекурсивно, передача специального и блочные устройства, сохранить символические ссылки, время модификации, группы, права собственности и права доступа.

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

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

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.


    Комментарии

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

Загрузка комментариев...