Montare un file system su Internet


11

Ho creato un'applicazione Web che viene eseguita su un server virtuale per uno dei miei clienti. Include la possibilità per loro di caricare file, ma ora vogliono archiviarli su un server nel loro ufficio.

Il modo più semplice per farlo sarebbe montare il loro file system su Internet direttamente sul server virtuale. Ho esperienza di montaggio di NFS su una rete interna, ma non sono chiaro se funzionerebbe in questo scenario.

qualche idea? Posso sempre scrivere nuovo software per trasferire i file, ma sarebbe una soluzione semplice!

Nota: il server in ufficio è il server Ubuntu 12 in esecuzione su un server virtuale in un ambiente hyper-v di Windows. Il VPS con l'app Web è Ubuntu 11.04


La sicurezza è un problema per questi file?
Adrian Cornish,

rsync tramite cron job.
Ignacio Vazquez-Abrams,

@AdrianCornish - non proprio, anche se sarebbe preferibile una soluzione sicura.

Risposte:


12

Nessuno ha ancora menzionato sshfs . Se sei su una moderna distribuzione Linux e hai accesso ssh all'host remoto, è semplice come:

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

Le prestazioni sono abbastanza accettabili (ma non così veloci come una sincronizzazione in streaming come rsync se si richiede l'intera directory).


Questa sembra la soluzione migliore finora, la FAQ dice anche "Le risorse possono essere montate su connessioni lente e inaffidabili (distanti)". Un'altra pagina web mi dice che "sshfs -o reconnect server: / path / to / mount" lo farà riconnettere automaticamente se la connessione si interrompe.

3

NFS è intrinsecamente insicuro. Sarebbe una scelta molto scadente per la connessione su Internet.

Mi piace il post che menziona rsync. Invece di usare cron per eseguire il trasferimento, spero che tu possa semplicemente eseguire il processo rsync dal tuo codice che gestisce il caricamento del file.

Al termine del caricamento, sincronizzare nuovamente il file sul proprio server.

Mi aspetterei di dover stabilire una connessione sicura al loro server per il trasferimento.

Se lo si desidera, è possibile inserire i file in arrivo in un elenco per il trasferimento, rimuovendo i nomi dopo aver eseguito correttamente la copia e concedendosi alcune funzionalità di failover, nel caso in cui accada qualcosa alla connessione.

Come già sottolineato da qualcun altro, rsync è progettato per gestire gruppi di file o una gerarchia (grazie, controllo ortografico), quindi non sarebbe così difficile da realizzare.


1
rsync non ha problemi a usare SSH come trasporto.
Ignacio Vazquez-Abrams,

L'app Web salva già i file sul server locale e li fa riferimento lì. Non ci sarà spazio sul server locale, quindi dovranno essere rimossi una volta trasferiti, il che significa scrivere un nuovo codice, quindi sto cercando prima una soluzione montata, se possibile.

1

NFS può essere intrinsecamente insicuro, ma non è colpa del servizio. Anche Telnet e FTP sono intrinsecamente insicuri, ma entrambi sono stati utilizzati per decenni su Internet aperto. Se viene stabilito un tunnel VPN crittografato, la mancanza della crittografia NFS è irrilevante.

Inoltre, se un firewall è configurato per consentire a un solo indirizzo host remoto specifico di connettersi al mountpoint NFS, una connessione NFS non protetta è per lo più protetta da attacchi di hacker, ad eccezione delle agenzie di tre lettere che annusano il traffico Internet e che hanno accesso a potenti decrittazioni per rompere comunque le connessioni remote crittografate.

Vedo che alcune versioni di NFS utilizzano UDP per impostazione predefinita, che è probabilmente la causa dei problemi di affidabilità di Internet. I pacchetti UDP possono andare persi se la connessione è congestionata e non viene tentata automaticamente alcuna ritrasmissione. Se si desidera una connessione affidabile, assicurarsi che NFS stia utilizzando (o sia costretto a utilizzare solo) i pacchetti TCP su Internet.


1
> Anche Telnet e FTP sono intrinsecamente insicuri, ma entrambi sono stati usati per decenni su Internet aperto Sebbene sia vero, non penso che questo sia un buon punto, perché generalmente è considerato una (molto) cattiva pratica usarli su Internet adesso. Mozilla suggerisce persino di deprecare http non crittografato .
Ian D. Scott,

0

NFS può essere eseguito tramite un firewall. Se cerchi, troverai altri che hanno tentato e hanno avuto successo con questo processo, tuttavia, non è così semplice come aprire le porte e sembra dipendere dalla versione di NFS in esecuzione.

rsync è un suggerimento eccellente e ha molta flessibilità. Tuttavia, questo sarebbe un processo eseguito al di fuori della tua app. rsync può gestire la sincronizzazione degli aggiornamenti dei file locali e mantenere un'intera directory sincronizzata con altre cartelle.

ssh sarebbe un'altra opzione sicura e richiederebbe l'apertura di una sola porta. Ho usato questo in passato tra i sistemi Windows e Linux e ha funzionato bene sia all'interno di un'app che nella pianificazione del processo.

Sono sicuro che ci sono altri modi per realizzare ciò che stai cercando, ma avremmo bisogno di maggiori informazioni sui tipi di file che sono e se li stai collegando in una pagina o li streaming con qualcosa di più complesso.


Comprendo le alternative, montare il filesystem sarebbe la soluzione più semplice, non so quanto sia stabile NFS su Internet rispetto a una rete interna. Cosa succede se la connessione si interrompe ecc. O se esiste una nuova alternativa progettata per essere robusta.

0

I montaggi NFS possono essere eseguiti utilizzando automount, che continuerà a provare il montaggio in caso di errore, ma l'unico modo in cui lo prenderei in considerazione usandolo su pipe è con un VPN o qualche altra connessione sicura (in realtà, non lo prenderei in considerazione, ma sembri fisso sull'idea).

Anche se si utilizza l'automount, se si verifica un problema di rete e si stanno inserendo i loro caricamenti sul supporto NFS, è probabile che il caricamento fallisca o venga danneggiato, a meno che non si stia memorizzando il file localmente e quindi si copi con successo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.