
Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Самые популярные протоколы для передачи данных — SSH и FTP . Несмотря на большую популярность FTP, всегда предпочитайте SSH, поскольку это самый безопасный способ передачи файлов.
Существуют специализированные инструменты для передачи файлов по SSH, такие как scp и sftp , но ни один из них не обладает всеми функциями, которые предоставляет rsync . rsync можно использовать для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами и т. д.
В этом уроке мы объясним, как копировать файлы с помощью rsync через SSH.
Требования
-
Утилита
rsyncдолжна быть установлена как на целевой, так и на исходной системе. Если она не установлена, вы можете установить её с помощью менеджера пакетов вашего дистрибутива:Ubuntu и Debian:
sudo apt install rsyncCentOS и 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 обозначает режим архивации, который будет рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время изменения, группу, владельца и разрешения.
Если вы не установили беспарольный вход по протоколу SSH на удаленный компьютер, вам будет предложено ввести пароль пользователя.
Если файл существует на удалённом сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
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 внутри сеанса screen или использовать опцию -P , которая указывает rsync отображать индикатор выполнения во время передачи и сохранять частично переданные файлы:
rsync -a -P /home/linuxize/images/ user@12.12.12.12:/var/www/images/
Заключение
Мы показали вам, как использовать rsync по SSH для копирования и синхронизации файлов и каталогов.
Возможно, вам также будет интересно узнать, как исключить файлы или каталоги с помощью rsync .
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Связанные руководства