Как передать файлы с помощью Rsync через SSH
Как передать файлы с помощью Rsync через SSH
How to Transfer Files with Rsync over 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
.