Android

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

amazingly useful and powerful tool for copying files - rsync

amazingly useful and powerful tool for copying files - rsync

Оглавление:

Anonim

Когда речь идет о передаче файлов между системами в сети, пользователи 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… -e ssh… HOST:DEST Remote to Local: rsync… -e ssh HOST:SRC…

Где 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 [email protected]:/var/www/

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

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

rsync -a /opt/file.zip [email protected]:/var/www/file2.zip

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

rsync -a [email protected]:/var/www/file.zip /opt/

Перенос каталогов с rsync через SSH такой же, как передача файлов.

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

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

rsync -a /home/linuxize/images/ [email protected]:/var/www/images/

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

rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/

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

rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/

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

rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/

Вывод

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

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

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

rsync терминал