Параметр Rsync -e для ssh

Параметр Rsync -e для ssh

Я пытался выяснить, нужна ли опция -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 могли взаимодействовать через удаленную оболочку.

Связанный контент