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

9

Existe alguma diferença se eu executar o rsync com 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 à velocidade de segurança ou de cópia sem o uso de switches, apenas o modo de arquivamento rsync e o caminho do host remoto (ssh). O mesmo com o sshfs mount apenas com origem e destino (sem alterações de cifra, apenas padrão).

    
por galq 18.05.2016 / 07:29

2 respostas

13

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

O maior problema é que o SSHFS mata em grande parte as otimizações de desempenho do rsync. Em particular, para arquivos de tamanho médio a grande, quando o rsync vê que um arquivo foi modificado, ele calcula somas de verificação em partes do arquivo em cada lado para transferir apenas as partes que foram modificadas. Essa é uma otimização somente 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 teria que ler o arquivo inteiro para determinar o que copiar. Na verdade, 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 viagem de 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 de shell, é possível e comum fornecer uma conta com um shell especial que permita apenas a execução de alguns programas, incluindo sftp-server e rsync . Veja Você precisa de um shell para o SCP?

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

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

O SSHFS é um sistema de arquivos FUSE e, portanto, suporta apenas metadados Unix tradicionais e ACL. O rsync pode transferir atributos estendidos (você precisa usar rsync -aAX , observe que um -a comum preserva apenas os metadados tradicionais do Unix).

    
por 19.05.2016 / 02:16
2

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

Para responder à sua pergunta secundária: O rsync sobre o ssh será mais rápido para a maioria, se não para todas as instâncias, porque o rsync no sistema remoto fornece mais inteligência na localização de arquivos que não precisam de sincronização, mas principalmente porque é executado paralelo ao seu rsync local para reunir essa informação.

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

    
por 18.05.2016 / 08:27