Я пытался выяснить, нужна ли опция -e? Разве я не использую ssh без нее, просто выполняя команду user@server
при запуске rsync?
решение1
Если предположить, что вам не нужно учитывать rsync
сам протокол, то это зависит от параметров компиляции, используемых для вашей версии rsync
.
Раньше протокол rsync
использовался rsh
по умолчанию (если только значение по умолчанию во время сборки не было изменено), но ssh
в 2004 году значение по умолчанию во время сборки изменилось на .
Если вы сомневаетесь, запустите rsync
процесс передачи относительно большого файла (или набора файлов) и в другом терминале запустите ps -ef | grep '[r]sync'
. Это покажет вам, используете ли вы ssh
для транспорта. Вот пример с одного из моих серверов, который наглядно показывает транспорт ssh
:
root 28057 27173 1 09:48 pts/4 00:00:00 rsync -avHP --dry-run /home roaima@otherserver:
root 28058 28057 0 09:48 pts/4 00:00:00 ssh -l roaima otherserver rsync --server -vnlHogDtpre.iLsfx --partial . .
Наконец, имейте в виду, что значение компиляции по умолчанию можно переопределить с помощью RSYNC_RSH
переменной окружения. (Дополнительные сведения см. на странице руководства.)
решение2
-e
для случаев, когда вам нужна удаленная оболочкаКроме какпо умолчанию ssh
. rsync
использует ssh
как транспорт по умолчанию, но может использовать любую удаленную оболочку (с парой ограничений*), его это не волнуеткакон подключается к удаленному серверу.
* Удаленная оболочка, которую вы используете, должна вести себя как оболочка. Она должна интерпретировать свой нулевой аргумент как назначение, а каждый последующий аргумент как команду для выполнения; команда, которую rsync передает через удаленную оболочку, является командой rsync --server …
, которая запускает сервер rsync на удаленном конце. Она также должна прикрепить свойСТДИНк командеСТДИН, и командаСТАНДАРТНЫЙ ВЫВОДкСТАНДАРТНЫЙ ВЫВОД, чтобы rsync и сервер rsync могли взаимодействовать через удаленную оболочку.