Когда речь идет о передаче файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Наиболее популярными протоколами для передачи данных являются SSH и FTP. Хотя FTP очень популярен, всегда предпочитайте использовать SSH, так как это самый безопасный способ передачи ваших файлов.
Есть специализированные инструменты для передачи файлов через SSH, такие как scp и sftp но ни один из них не обладают всеми возможностями, которые предоставляет rsync. rsync может использоваться для зеркалирования данных, инкрементных резервных копий, копирования файлов между системами и так далее.
В этой статье мы объясним, как копировать файлы с помощью rsync через SSH.
sudo apt install rsync
CentOS и Fedora:
sudo yum install rsync
С помощью 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-адресом 11.11.11.11, вы должны выполнить:
rsync -a /opt/file.zip user@11.11.11.11:/var/www/
Опция -a означает архивный режим, который синхронизирует каталоги рекурсивно, передавать специальные и блочные устройства, сохранить символические ссылки, время модификации, группу, права собственности и право доступа.
Если вы не установили пароль «без пароля» для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
rsync -a /opt/file.zip user@11.11.11.11:/var/www/file2.zip
Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:
rsync -a user@11.11.11.11:/var/www/file.zip /opt/
Передача каталогов rsync по протоколу SSH аналогична передаче файлов.
Важно знать, что rsync в исходных каталогах по-разному трактуется косая черта /. Если исходный каталог имеет косую черту, rsync будет копировать только содержимое исходного каталога в целевой каталог. Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный каталог /opt/website/images/ в каталог /var/www/images/ на удаленном компьютере, вы должны набрать:
rsync -a /home/andreyex/images/ user@11.11.11.11:/var/www/images/
Используйте опцию —delete, если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этой опции, поскольку она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
rsync -a --delete /home/andreyex/images/ user@11.11.11.11:/var/www/images/
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e. Например, если SSH прослушивает порт 3322, вы должны использовать:
rsync -a -e "ssh -p 3322" /home/andreyex/images/ user@11.11.11.11:/var/www/images/
При передаче больших объемов данных рекомендуется запускать команду rsync в сеансе экрана или использовать параметр -P, который указывает rsync показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
rsync -a -P /home/andreyex/images/ user@11.11.11.11:/var/www/images/
Мы показали вам, как использовать rsync поверх SSH для копирования и синхронизации файлов и каталогов.
Вы также можете прочитать, как исключить файлы или каталоги с помощью rsync.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.