Montando um sistema de arquivos pela internet

7

Eu criei um aplicativo da web que é executado em um servidor virtual para um dos meus clientes. Isso inclui a facilidade de fazer upload de arquivos, mas agora eles querem armazenar esses arquivos em um servidor no escritório.

A maneira mais fácil de fazer isso seria montar o sistema de arquivos pela Internet diretamente no servidor virtual. Tenho experiência em montar o NFS em uma rede interna, mas não estou claro se isso funcionaria nesse cenário.

Alguma ideia? Eu sempre posso escrever um novo software para transferir os arquivos, mas isso seria uma solução fácil!

Nota: O servidor no escritório é o servidor Ubuntu 12 em execução em um servidor virtual em um ambiente Windows Hyper-V. O VPS com o aplicativo da web é o Ubuntu 11.04

    
por Ben Holness 17.08.2012 / 05:21

5 respostas

11

Ninguém mencionou sshfs ainda. Se você está em uma moderna distribuição linux e tem acesso ssh ao host remoto, é tão simples quanto:

sshfs user@hostname:/remote/directory /local/directory

O desempenho é bastante aceitável (mas não tão rápido quanto uma sincronização em fluxo, como o rsync, se você precisar de todo o diretório).

    
por 17.08.2012 / 07:22
1

O NFS é inerentemente inseguro. Seria uma escolha muito ruim para se conectar pela internet.

Eu gosto da postagem que menciona o rsync. Em vez de usar o cron para disparar a transferência, eu espero que você possa simplesmente executar o trabalho rsync a partir do seu código que manipula o upload do arquivo.

Quando o upload terminar, rsync o arquivo para o seu servidor, feito.

Você precisaria configurar uma conexão segura com o servidor para a transferência, eu esperaria.

Se você quisesse, poderia colocar os arquivos recebidos em uma lista para transferência, removendo os nomes após a cópia bem-sucedida e obter algum recurso de failover, caso algo aconteça com a conexão.

Como alguém já apontou, o rsync é projetado para lidar com grupos de arquivos, ou uma hierarquia (obrigado, verificação ortográfica), então isso não seria tão difícil de realizar.

    
por 17.08.2012 / 05:43
1

O NFS pode ser inerentemente inseguro, mas isso não é culpa do serviço. Telnet e FTP também são inerentemente inseguros, mas ambos são usados há décadas na Internet aberta. Se um túnel VPN criptografado é estabelecido, então a falta de criptografia NFS é irrelevante.

Além disso, se um firewall for configurado para permitir apenas que um endereço de host remoto específico se conecte ao ponto de montagem do NFS, uma conexão NFS simples é protegida contra hackers, exceto por agências de três letras que farejam o tráfego da Internet e que tenham acesso a poderosa descriptografia para quebrar suas conexões remotas criptografadas de qualquer maneira.

Vejo que algumas versões do NFS usam o UDP por padrão, o que é provável onde os problemas de confiabilidade da Internet vêm. Os pacotes UDP podem ser perdidos se a conexão estiver congestionada e nenhuma retransmissão for tentada automaticamente. Se você deseja uma conexão confiável, verifique se o NFS está usando (ou é forçado a usar somente) pacotes TCP pela Internet.

    
por 29.12.2015 / 02:54
0

NFS pode ser feito através de um firewall. Se você pesquisar, encontrará outras pessoas que tentaram e obtiveram sucesso com esse processo, no entanto, elas não são tão simples como abrir portas e parecem depender da versão do NFS em execução.

O

rsync é uma excelente sugestão e tem muita flexibilidade. No entanto, isso seria um processo executado fora do seu aplicativo. O rsync pode lidar com a sincronização de atualizações de arquivos locais e manter um diretório inteiro em sincronia com outras pastas.

ssh seria outra opção segura e exigiria apenas que uma única porta fosse aberta. Eu usei isso no passado entre sistemas Windows e Linux e funcionou bem tanto dentro de um aplicativo quanto agendando o processo.

Tenho certeza de que existem outras maneiras de realizar o que você está procurando, mas precisaríamos de mais informações sobre os tipos de arquivos que eles são e se você os está vinculando a uma página ou transmitindo-os com algo mais complexo .

    
por 17.08.2012 / 05:33
0

Montagens NFS podem ser feitas usando automount, que continuará a tentar a montagem na falha, mas a única maneira que eu consideraria usá-lo sobre os canos é com uma vpn ou alguma outra conexão segura (na verdade, eu não consideraria mas você se fixa na ideia).

Mesmo usando o automount, se houver um problema de rede e você estiver colocando os uploads na montagem NFS, o upload provavelmente falhará ou ficará corrompido, a menos que você esteja armazenando o arquivo localmente e copiando com sucesso.

    
por 17.08.2012 / 06:05