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).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Когда я используюrsync
эту операцию, при вычислении контрольной суммы для переноса только частей, которые были изменены,rsync
нужно ли читать весь файл, что приведет к загрузке полных данных вместо только его обновленного раздела? @Gillessshfs
соединение? Пожалуйста , смотрите: unix.stackexchange.com/q/544404/198423 @GillesЧтобы ответить на ваш главный вопрос: да, есть различия. С
sshfs
существующим соединением, обеспечивающим доступ к удаленным файлам по защищенному каналу, и с помощью rsync через ssh этот защищенный канал настроен для связи с удаленным экземпляром rsync .Чтобы ответить на ваш вторичный вопрос: rsync через ssh будет быстрее для большинства, если не для всех экземпляров, потому что rsync в удаленной системе предоставляет больше возможностей для поиска файлов, которые не нуждаются в синхронизации, но в первую очередь потому, что он работает параллельно с вашей. местный rsync, чтобы собрать эту информацию.
Безопасность обоих способов при условии одинаковой конфигурации параметров ssh (длина ключа, алгоритмы) одинакова. Какие значения по умолчанию для вашей системы источника и назначения, зависит от комбинаций распределений в этих системах.
источник