
Есть ли разница, если я запускаю rsync с удаленным хостом (ssh://) в качестве источника/назначения или использую локальный путь для общего доступа к смонтированному каталогу через sshfs?
Могут ли быть различия в отношении безопасности или скорости копирования без использования каких-либо переключателей, просто puse rsync archive mode и remote host path (ssh). То же самое с монтированием sshfs, только с источником и местом назначения (без изменений шифра, просто по умолчанию).
решение1
SSHFS удобен, но он плохо сочетается с rsync или, в более общем плане, с инструментами синхронизации.
Самая большая проблема в том, что SSHFS в значительной степени убивает оптимизацию производительности rsync. В частности, для средних и больших файлов, когда rsync видит, что файл был изменен, он вычисляет контрольные суммы для частей файла на каждой стороне, чтобы передать только те части, которые были изменены. Это оптимизация только в том случае, если пропускная способность сети значительно меньше пропускной способности диска, что обычно и происходит. Но в случае SSHFS пропускная способность «диска» на самом деле является пропускной способностью сети, поэтому rsync должен прочитать весь файл, чтобы определить, что копировать. Фактически, при локальном копировании (которым оно и является, насколько это касается rsync, даже если одна из сторон находится на SSHFS), rsync просто копирует весь файл.
SSHFS также вредит производительности, если есть много маленьких файлов. Rsync необходимо проверить по крайней мере метаданные каждого файла, чтобы определить, был ли он изменен. С SSHFS это требует сетевого кругового обхода для каждого файла. С rsync через SSH обе стороны могут работать параллельно и передавать информацию оптом, что намного быстрее.
С точки зрения ограничений доступа, SSHFS требует доступа SFTP, тогда как rsync требует возможности запускать код (в частности, программу rsync) через оболочку. Если у пользователя нет учетной записи оболочки, возможно и распространено предоставить учетную запись со специальной оболочкой, которая позволяет запускать только несколько программ, включая sftp-server
и rsync
. СмотритеВам нужна оболочка для SCP?
Если вы только копируете новые файлы и их количество не очень велико, то существенной разницы в производительности не будет.
SSHFS устанавливает SSH-подключение, когда файловая система монтируется, и сохраняет это подключение, пока оно не будет размонтировано. Rsync создает новое подключение каждый раз, когда вы его запускаете, но вы можете использоватьфункция мультиплексирования и совмещения на одном основном соединениичтобы избежать аутентификации каждый раз.
SSHFS — это файловая система FUSE, поэтому поддерживает только традиционные метаданные Unix и ACL. Rsync может передавать расширенные атрибуты (вам необходимо использовать rsync -aAX
, обратите внимание, что простой -a
сохраняет только традиционные метаданные Unix).
решение2
Отвечая на ваш главный вопрос: да, есть различия. При sshfs
наличии существующего соединения, позволяющего получить доступ к удаленным файлам по защищенному каналу, и при использовании rsync через ssh, этот защищенный канал настраиваетсядля связи с удаленным экземпляром rsync.
Отвечая на ваш второстепенный вопрос: rsync через ssh будет быстрее в большинстве случаев, если не во всех, потому что rsync на удаленной системе обеспечивает более интеллектуальный поиск файлов, которые не нуждаются в синхронизации, но в первую очередь потому, что он работает параллельно с вашим локальным rsync для сбора этой информации.
Безопасность обоих способов, при условии схожей конфигурации параметров ssh (длина ключа, алгоритмы), одинакова. То, какие значения по умолчанию используются для исходной и целевой систем, зависит от комбинаций дистрибутивов в этих системах.