Введение
Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Наиболее популярными протоколами для передачи данных являются SSH и FTP. Хотя FTP очень популярен, вы всегда предпочитаете использовать SSH, так как это самый безопасный способ передачи файлов.
Существуют специализированные инструменты для передачи файлов по SSH, такие как scp
и sftp
, но ни один из них не обладает всеми функциями, которые предлагает rsync
. rsync
можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами и так далее.
В этом руководстве мы объясним, как копировать файлы с помощью rsync
через SSH.
Предпосылки
Утилита rsync
должна быть установлена как в целевой, так и в исходной системах. Если он не установлен, вы можете установить его с помощью менеджера пакетов вашего дистрибутива:
Убунту и Дебиан:
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/noviello/images/[email protected]:/var/www/images/
Используйте параметр --delete
, если вы хотите синхронизировать локальный и удаленный каталоги. Будьте осторожны при использовании этой опции, так как она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
rsync -a --delete /home/noviello/images/[email protected]:/var/www/images/
Если SSH на удаленном узле прослушивает порт, отличный от 22
по умолчанию, укажите порт с помощью параметра -e
. Например, если SSH прослушивает порт 3322
, используйте:
rsync -a -e "ssh -p 3322" /home/noviello/images/[email protected]:/var/www/images/
При передаче больших объемов данных рекомендуется запускать команду rsync
в сеансе экрана или использовать параметр -P
, который указывает команде rsync
отображать индикатор выполнения во время передачи и сохранять частично переданные файлы:
rsync -a -P /home/noviello/images/[email protected]:/var/www/images/
Вывод
Мы показали вам, как использовать rsync
через SSH для копирования и синхронизации файлов и каталогов.