Когда дело доходит до передачи файлов между системами в сети, пользователи 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 [email protected]:/var/www/
Параметр -a
обозначает режим архива, который рекурсивно синхронизирует каталоги, передает специальные и блочные устройства, сохраняет символические ссылки, время модификации, группу, владение и разрешения.
Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
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
.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.