Rsync передать файлы через ssh
С помощью Rsync вы можете зеркалировать данные, создавать инкрементные резервные копии и копировать файлы между системами. При копировании данных вы можете исключить один или несколько файлов или каталогов на основе их имени или местоположения.
В этом руководстве мы покажем вам, как исключить файлы и каталоги с помощью rsync.
Подготовка
Вы должны иметь базовые знания о том, как работает rsync .
В приведенных ниже примерах мы будем использовать rsync с параметром -a . Это указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства и сохранять символические ссылки, время модификации, группу, владение и разрешения.
При исключении файлов или каталогов вам необходимо использовать их относительные пути к исходному каталогу.
Есть два варианта указать файлы и каталоги, которые вы хотите исключить:
- Из командной строки с помощью параметра --exclude .
- Из файла с помощью параметра --exclude-from .
Исключить определенный файл
Чтобы исключить конкретный файл, передайте относительный путь к файлу в параметре --exclude .
В следующем примере файл src_directory/file.txt не будет перенесен:
Исключить конкретный каталог
Исключение определенного каталога аналогично исключению файла, просто передайте относительный путь к каталогу параметру --exclude как показано ниже:
Если вы хотите исключить содержимое каталога, но не сам каталог, используйте dir1/* вместо dir1 :
Исключить несколько файлов или каталогов
Чтобы исключить несколько файлов или каталогов, просто укажите несколько параметров --exclude :
Если вы предпочитаете использовать одну опцию --exclude вы можете перечислить файлы и каталоги, которые вы хотите исключить, в фигурных скобках <> разделенных запятой, как показано ниже:
Если количество файлов и / или каталогов, которые вы хотите исключить, велико, вместо использования нескольких параметров --exclude вы можете указать файлы и каталоги, которые вы хотите исключить в файле, и передать файл в --exclude-from вариант.
Команда ниже делает то же самое, что и команда выше:
Исключить несколько файлов или каталогов на основе шаблона
С помощью rsync вы также можете исключить файлы и каталоги на основе шаблона, который соответствует имени файла или каталога.
Например, чтобы исключить все файлы .jpg вы должны запустить:
Немного сложнее исключить все другие файлы и каталоги, кроме тех, которые соответствуют определенному шаблону. Предположим, вы хотите исключить все остальные файлы и каталоги, кроме файлов с .jpg .
При использовании нескольких параметров включения / исключения применяется первое правило сопоставления.
\n | rsync -a --files-from=- src_directory/ dst_directory/
Выводы
В этом руководстве вы узнали, как исключить файлы и каталоги при передаче данных с помощью Rsync. Еще больше информации о Rsync можно найти на странице руководства пользователя Rsync .
Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Наиболее популярными протоколами для передачи данных являются SSH и FTP . Хотя FTP очень популярен, всегда предпочитайте использовать SSH, так как это самый безопасный способ передачи ваших файлов.
Есть специализированные инструменты для передачи файлов через SSH , такие как scp и , sftp но ни один из них не обладают всеми возможностями , которые rsync предоставляют. rsync может использоваться для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами и так далее.
Требования
rsync Утилита должна быть установлена на обоих назначения и исходных систем. Если он не установлен, вы можете установить его, используя менеджер пакетов вашего дистрибутива:
Ubuntu и Debian:
CentOS и Fedora:
SSH доступ к удаленному компьютеру.
Пользователь, выполняющий rsync команду, и удаленный пользователь SSH должны иметь соответствующие разрешения для чтения и записи файлов.
Использование rsync для передачи файлов по SSH
С помощью rsync вы можете передавать файлы и каталоги по SSH с и на удаленные серверы.
Общий синтаксис для передачи файлов с помощью rsync следующего:
Где SRC находится исходный каталог, DEST целевой каталог USER - это удаленное имя пользователя SSH, а HOST также удаленный хост SSH или IP-адрес.
Более новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить эту -e ssh опцию.
Например, для передачи одного файла /opt/file.zip из локальной системы в /var/www/ каталог на удаленной системе с IP-адресом 12.12.12.12 вы должны выполнить:
-a Опция означает архивный режим , который синхронизирует каталоги рекурсивно, передача специального и блочные устройства, сохранить символические ссылки, время модификации, группы, права собственности и права доступа.
Если вы не установили пароль без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:
Передача каталогов rsync по протоколу SSH аналогична передаче файлов.
Важно знать, что rsync в исходных каталогах по-разному трактуется косая черта / . Если исходный каталог имеет косую черту, rsync будет копироваться только содержимое исходного каталога в целевой каталог. Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный /opt/website/images/ каталог в /var/www/images/ каталог на удаленной машине, вы должны набрать:
Используйте эту --delete опцию, если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этой опции, поскольку она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22 , укажите порт с помощью -e параметра. Например, если SSH прослушивает порт, 3322 вы должны использовать:
При передаче больших объемов данных рекомендуется запускать rsync команду в сеансе экрана или использовать -P параметр, который указывает rsync показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
Вывод
Мы показали вам, как использовать rsync поверх SSH для копирования и синхронизации файлов и каталогов.
Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Существуют специализированные инструменты для передачи файлов по SSH, такие как scp и sftp но ни один из них не обладает всеми функциями, которые предоставляет rsync . rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами и так далее.
В этом руководстве мы объясним, как копировать файлы с помощью rsync через SSH.
Требования
rsync необходимо установить как в целевой, так и в исходной системах. Если он не установлен, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива:
Ubuntu и Debian:
CentOS и Fedora:
SSH-доступ к удаленному компьютеру.
Пользователь, выполняющий команду rsync и удаленный пользователь SSH должны иметь соответствующие разрешения на чтение и запись файлов.
Использование rsync для передачи файлов по SSH
С помощью rsync вы можете передавать файлы и каталоги по SSH с удаленных серверов и на них.
Общий синтаксис передачи файлов с помощью rsync следующий:
Новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить параметр -e ssh .
Например, чтобы передать один файл /opt/file.zip из локальной системы в каталог /var/www/ удаленной системы с IP 12.12.12.12 вы должны запустить:
Параметр -a обозначает режим архива, который рекурсивно синхронизирует каталоги, передает специальные и блочные устройства, сохраняет символические ссылки, время модификации, группу, владение и разрешения.
Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
Чтобы передать данные с удаленного компьютера на локальный, используйте удаленное местоположение в качестве источника и локальное местоположение в качестве пункта назначения:
Передача каталогов с помощью rsync через SSH аналогична передаче файлов.
Важно знать, что rsync разному обрабатывает исходные каталоги с завершающей косой чертой / . Если исходный каталог имеет косую черту в конце, rsync скопирует только содержимое исходного каталога в целевой каталог. Если опустить косую черту в конце, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный каталог /opt/website/images/ каталог /var/www/images/ на удаленном компьютере, вы должны ввести:
Используйте параметр --delete если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этого параметра, так как он удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22 , укажите порт с помощью параметра -e . Например, если SSH прослушивает порт 3322 вы должны использовать:
При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P который указывает rsync показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
Выводы
Мы показали вам, как использовать rsync поверх SSH для копирования и синхронизации файлов и каталогов.
Вы также можете прочитать, как исключить файлы или каталоги с помощью rsync .
Rsync можно использовать для зеркального отображения данных, инкрементного резервного копирования, копирования файлов между системами, а также в качестве замены команд scp , sftp и cp .
В этой статье объясняется, как использовать rsync на практических примерах и подробных объяснениях наиболее распространенных параметров rsync .
Установка Rsync
Утилита rsync предустановлена в большинстве дистрибутивов Linux и macOS. Если в вашей системе не установлен rsync , вы можете легко установить его с помощью диспетчера пакетов вашего дистрибутива.
Установите Rsync в Ubuntu и Debian
Установите Rsync на CentOS и Fedora
Синтаксис команды Rsync
Прежде чем перейти к использованию команды rsync , давайте начнем с обзора основного синтаксиса.
Выражения утилиты rsync имеют следующую форму:
rsync предоставляет ряд параметров, управляющих поведением команды. Наиболее широко используемые варианты:
Базовое использование Rsync
Пользователь, выполняющий команду, должен иметь разрешения на чтение в исходном местоположении и разрешения на запись в месте назначения.
Если пропустить имя файла из места назначения, файл будет скопирован с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в целевой части:
Настоящая мощь rsync проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:
Если целевой каталог не существует, rsync создаст его.
Стоит отметить, что rsync разному обрабатывает исходные каталоги с помощью завершающей косой черты ( / ). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, rsync копирует исходный каталог в целевой каталог.
Использование rsync для синхронизации данных с / на удаленную машину
При использовании rsync для удаленной передачи данных его необходимо установить как на исходном, так и на целевом компьютере. Новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию.
В следующем примере мы переносим каталог с локального компьютера на удаленный:
Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.Чтобы передать данные с удаленного компьютера на локальный, используйте удаленное местоположение в качестве источника:
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e :
При передаче больших объемов данных рекомендуется запускать команду rsync внутри сеанса экрана или использовать параметр -P :
Исключить файлы и каталоги
При исключении файлов или каталогов необходимо использовать их относительные пути к исходному местоположению.
В следующем примере показано, как исключить node_modules и tmp :
Выводы
Мы показали вам, как использовать Rsync для копирования и синхронизации файлов и каталогов. Еще больше информации о Rsync можно найти на странице руководства пользователя Rsync .
Для копирования файлов по сети используется много инструментов. Наиболее распространенный из них - ftp, многие используют и scp. Для синхронизации данных используется rsync.
В rsync используется довольно-таки сложный алгоритм, с помощью которого передаются фактически только изменения в файлах, к тому же, для того, чтобы понять, что файл изменен, rsync не требуется сравнение двух файлов, что довольно сильно повышает производительность по сравнению с другими инструментами синхронизации. Ещё один плюс rsync - сжатие данных на лету, что ещё больше увеличивает эффективность.
Помимо указанных выше преимуществ, у rsync есть возможность передачи данных по защищенному соединению - ssh, это, несомненно, плюс к безопасности этой программы. Также, rsync сначала записывает передаваемую информацию во временный файл, чтобы исключить потерю информации в случае непредвиденных обстоятельств(отключение интернета или электричества).
Если имеется доступ по ssh к серверу, это наиболее простой способ для осуществления синхронизации. Rsync по ssh - это частный случай использования, общий вид команды выглядит так:
rsync [ОПЦИИ] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ИСТОЧНИК. [ПОЛУЧАТЕЛЬ]Pull (копирование файлов с удаленной системы на локальную) rsync [ОПЦИИ] ИСТОЧНИК 1 [ИСТОЧНИК N] [ПОЛЬЗОВАТЕЛЬ@]СЕРВЕР:ПОЛУЧАТЕЛЬ
Push (копирование файлов с локальной машины на удаленную)
В официальной документации по rsync "Push" - это копирование файлов с локальной машины на удалённую, а "Pull" - с удалённой на локальную.
Обязательным параметром является "ИСТОЧНИК", их может быть несколько.
Основные ключи:
Примеры:
Как ограничить скорость передачи файлов? Нужно поставить опцию --bwlimit :
Как синхронизировать файлы с проверкой по контрольной сумме?
Как скопировать файлы с удаленной машины на локальную?
Как исключить файл или директорию при копировании?
Как использовать нестандартный порт ssh при копировании rsync?
Запись опубликована автором MishLen в рубрике ПО (Linux) с метками rsync, ssh. Добавьте в закладки постоянную ссылку.Похожие записи:
Синхронизация файлов с помощью rsync по ssh Linux/FreeBSD : 4 комментария
Читайте также: