Различия между rsync на удаленном и rsync локальном на смонтированных sshfs?

12

Есть ли разница, если я запускаю rsync с удаленным хостом (ssh: //) в качестве источника / места назначения или использую локальный путь для совместного использования смонтированного каталога через sshfs?

Могут ли быть различия в отношении безопасности или скорости копирования без использования каких-либо ключей, просто используйте режим архива puse rsync и путь к удаленному хосту (ssh). То же самое с монтированием sshfs только с источником и местом назначения (без изменений шифра, только по умолчанию).

galq
источник

Ответы:

17

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).

Жиль "ТАК - перестань быть злым"
источник
Например, у меня есть один сжатый файл в смонтированном каталоге SSHFS, и этот файл копируется в мой локальный каталог. Позже этот файл обновляется в смонтированном каталоге, и я хочу скопировать только его обновленный раздел в мой локальный каталог, используя rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz. Когда я использую rsyncэту операцию, при вычислении контрольной суммы для переноса только частей, которые были изменены, rsyncнужно ли читать весь файл, что приведет к загрузке полных данных вместо только его обновленного раздела? @Gilles
Alper
1
@alper Когда вы используете rsync поверх sshfs, rsync должен прочитать весь файл. Он не может знать, что нужно обновить в противном случае. Нет способа оптимизировать, передавая только контрольные суммы, потому что нет способа вычислить контрольные суммы на сервере.
Жиль "ТАК - прекрати быть злым"
Будет ли это так же, если целевое расположение - это смонтированная папка, а не sshfsсоединение? Пожалуйста , смотрите: unix.stackexchange.com/q/544404/198423 @Gilles
Alper
4

Чтобы ответить на ваш главный вопрос: да, есть различия. С sshfsсуществующим соединением, обеспечивающим доступ к удаленным файлам по защищенному каналу, и с помощью rsync через ssh этот защищенный канал настроен для связи с удаленным экземпляром rsync .

Чтобы ответить на ваш вторичный вопрос: rsync через ssh будет быстрее для большинства, если не для всех экземпляров, потому что rsync в удаленной системе предоставляет больше возможностей для поиска файлов, которые не нуждаются в синхронизации, но в первую очередь потому, что он работает параллельно с вашей. местный rsync, чтобы собрать эту информацию.

Безопасность обоих способов при условии одинаковой конфигурации параметров ssh (длина ключа, алгоритмы) одинакова. Какие значения по умолчанию для вашей системы источника и назначения, зависит от комбинаций распределений в этих системах.

Энтон
источник