Diferenças entre o rsync no local remoto e o rsync nos sshfs montados?

12

Existe alguma diferença se eu executar o rsync com o host remoto (ssh: //) como origem / destino ou usar o caminho local para compartilhar o diretório montado via sshfs?

Pode haver diferenças em relação à segurança ou velocidade de cópia sem o uso de nenhum comutador, basta ativar o modo de arquivamento rsync e o caminho do host remoto (ssh). O mesmo acontece com o sshfs montado apenas com a origem e o destino (sem alterações na cifra, apenas o padrão).

galq
fonte

Respostas:

17

O SSHFS é conveniente, mas não combina bem com o rsync ou mais geralmente com as ferramentas de sincronização.

O maior problema é que o SSHFS mata amplamente as otimizações de desempenho do rsync. Em particular, para arquivos médios e grandes, quando o rsync vê que um arquivo foi modificado, ele calcula somas de verificação em partes do arquivo de cada lado para transferir apenas as partes que foram modificadas. Essa é uma otimização apenas se a largura de banda da rede for significativamente menor que a largura de banda do disco, o que geralmente é o caso. Mas com o SSHFS, a largura de banda do “disco” é de fato a largura de banda da rede, portanto o rsync precisaria ler o arquivo inteiro para determinar o que copiar. De fato, com uma cópia local (que é, no que diz respeito ao rsync, mesmo que um dos lados esteja no SSHFS), o rsync apenas copia o arquivo inteiro.

O SSHFS também é prejudicial ao desempenho se houver muitos arquivos pequenos. O Rsync precisa verificar pelo menos os metadados de cada arquivo para determinar se ele foi modificado. Com o SSHFS, isso requer uma ida e volta da rede para cada arquivo. Com o rsync sobre SSH, os dois lados podem trabalhar em paralelo e transferir informações em massa, o que é muito mais rápido.

Em termos de restrições de acesso, o SSHFS requer acesso SFTP, enquanto o rsync requer a capacidade de executar código (especificamente, o programa rsync) por meio de um shell. Se o usuário não tiver uma conta shell, é possível e comum fornecer uma conta com um shell especial que permita apenas a execução de alguns programas, incluindo sftp-servere rsync. Consulte Você precisa de um shell para o SCP?

Se você estiver apenas copiando novos arquivos e não houver um número muito grande de arquivos, não haverá diferença significativa de desempenho.

O SSHFS estabelece uma conexão SSH quando o sistema de arquivos é montado e mantém essa conexão até que seja desmontada. O Rsync faz uma nova conexão cada vez que você a executa, mas você pode usar o recurso de multiplexação e pegar carona em uma única conexão principal para evitar a autenticação a cada vez.

O SSHFS é um sistema de arquivos FUSE e, portanto, suporta apenas metadados e ACL tradicionais do Unix. O Rsync pode transferir atributos estendidos (você precisa usar rsync -aAX, observe que uma planície -apreserva apenas os metadados tradicionais do Unix).

Gilles 'SO- parar de ser mau'
fonte
Por exemplo, eu tenho um único arquivo compactado no diretório SSHFS montado e esse arquivo é copiado para o meu diretório local. Posteriormente, esse arquivo é atualizado no diretório montado e desejo copiar apenas sua seção atualizada para o meu diretório local usando rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz. Quando uso rsyncpara esta operação, durante o cálculo da soma de verificação, a fim de transferir apenas as partes que foram modificadas, rsyncdeve ler o arquivo inteiro, o que levará o download dos dados completos, em vez de apenas a seção atualizada? @Gilles
alper 29/09/19
1
@alper Quando você usa o rsync sobre sshfs, o rsync precisa ler o arquivo inteiro. Não pode saber o que precisa ser atualizado caso contrário. Não há como otimizar transferindo apenas somas de verificação porque não há como calcular somas de verificação no servidor.
Gilles 'SO- stop be evil'
Seria o mesmo se o local de destino fosse uma pasta montada e não uma sshfsconexão? Por favor, veja: unix.stackexchange.com/q/544404/198423 @Gilles
alper
4

Para responder à sua pergunta principal: sim, existem diferenças. Com sshfsuma conexão existente para permitir o acesso a arquivos remotos através de um canal seguro e com o rsync over ssh, esse canal seguro é configurado para conversar com uma instância remota do rsync .

Para responder à sua pergunta secundária: O rsync over ssh será mais rápido para a maioria, se não todas as instâncias, porque o rsync no sistema remoto fornece mais inteligência para encontrar arquivos que não precisam ser sincronizados, mas principalmente porque é executado em paralelo ao seu rsync local para coletar essas informações.

A segurança de ambas as formas é, assumindo a mesma configuração dos parâmetros ssh (comprimento da chave, algoritmos). Quais são os padrões para o seu sistema de origem e destino, depende das combinações de distribuições nesses sistemas.

Anthon
fonte