Ich habe eine Webanwendung erstellt, die auf einem virtuellen Server für einen meiner Kunden ausgeführt wird. Es enthält die Möglichkeit, Dateien hochzuladen, diese Dateien möchten sie jedoch jetzt auf einem Server in ihrem Büro speichern.
Der einfachste Weg, dies zu tun, besteht darin, das Dateisystem über das Internet direkt auf dem virtuellen Server bereitzustellen. Ich habe Erfahrung mit dem Mounten von NFS über ein internes Netzwerk, bin mir jedoch nicht sicher, ob dies in diesem Szenario funktionieren würde.
Irgendwelche Gedanken? Ich kann immer neue Software schreiben, um die Dateien zu übertragen, aber dies wäre eine einfache Lösung!
Hinweis: Der Server im Büro ist ein Ubuntu 12-Server, der auf einem virtuellen Server in einer Windows Hyper-V-Umgebung ausgeführt wird. Das VPS mit der Web-App ist Ubuntu 11.04
quelle
Antworten:
Noch hat niemand sshfs erwähnt . Wenn Sie sich in einer modernen Linux-Distribution befinden und SSH-Zugriff auf den Remote-Host haben, ist dies so einfach wie:
Die Leistung ist durchaus akzeptabel (aber bei weitem nicht so schnell wie eine gestreamte Synchronisierung wie rsync, wenn Sie das gesamte Verzeichnis benötigen).
quelle
NFS ist von Natur aus unsicher. Es wäre eine sehr schlechte Wahl, um eine Verbindung über das Internet herzustellen.
Ich mag den Beitrag, in dem rsync erwähnt wird. Anstatt cron zum Auslösen der Übertragung zu verwenden, würde ich hoffen, dass Sie den rsync-Job einfach über Ihren Code ausführen können, der den Datei-Upload verwaltet.
Wenn der Upload abgeschlossen ist, synchronisieren Sie die Datei mit ihrem Server.
Ich würde erwarten, dass Sie für die Übertragung eine sichere Verbindung zu ihrem Server herstellen müssen.
Wenn Sie möchten, können Sie die eingehenden Dateien zur Übertragung in eine Liste einfügen, die Namen nach dem erfolgreichen Kopieren entfernen und sich eine Failover-Funktion geben, falls etwas mit der Verbindung passiert.
Wie bereits jemand anderes betont hat, ist rsync für die Verarbeitung von Dateigruppen oder einer Hierarchie (danke, Rechtschreibprüfung) ausgelegt, sodass dies nicht so schwer zu erreichen ist.
quelle
NFS kann von Natur aus unsicher sein, aber das ist nicht die Schuld des Dienstes. Telnet und FTP sind ebenfalls von Natur aus unsicher, werden jedoch seit Jahrzehnten im offenen Internet verwendet. Wenn ein verschlüsselter VPN-Tunnel eingerichtet wird, ist das Fehlen einer NFS-Verschlüsselung irrelevant.
Auch wenn eine Firewall so konfiguriert ist, dass nur eine bestimmte Remote-Host-Adresse eine Verbindung zum NFS-Mountpoint herstellen kann, ist eine reine NFS-Verbindung größtenteils vor Hacking geschützt, mit Ausnahme von Drei-Buchstaben-Agenturen, die den Internetverkehr abhören und auf die eine leistungsstarke Entschlüsselung zugreifen kann Knacken Sie trotzdem Ihre verschlüsselten Remoteverbindungen.
Ich sehe, dass einige Versionen von NFS standardmäßig UDP verwenden, was wahrscheinlich auf die Probleme mit der Internetzuverlässigkeit zurückzuführen ist. UDP-Pakete können verloren gehen, wenn die Verbindung überlastet ist und keine erneute Übertragung automatisch versucht wird. Wenn Sie eine zuverlässige Verbindung wünschen, stellen Sie sicher, dass Ihr NFS TCP-Pakete über das Internet verwendet (oder nur dazu gezwungen ist).
quelle
NFS kann über eine Firewall erfolgen. Wenn Sie suchen, werden Sie andere finden, die diesen Prozess versucht haben und erfolgreich waren. Dies ist jedoch nicht so einfach wie das Öffnen von Ports und scheint von der Version von NFS abhängig zu sein, die ausgeführt wird.
rsync ist ein ausgezeichneter Vorschlag und hat viel Flexibilität. Dies wäre jedoch ein Prozess, der außerhalb Ihrer App ausgeführt wird. rsync kann die Synchronisierung lokaler Dateiaktualisierungen durchführen und ein gesamtes Verzeichnis mit anderen Ordnern synchronisieren.
ssh wäre eine weitere sichere Option und würde nur das Öffnen eines einzelnen Ports erfordern. Ich habe dies in der Vergangenheit zwischen Windows- und Linux-Systemen verwendet und sowohl innerhalb einer App als auch bei der Planung des Prozesses gut funktioniert.
Ich bin mir sicher, dass es andere Möglichkeiten gibt, um das zu erreichen, wonach Sie suchen, aber wir benötigen weitere Informationen zu den Dateitypen, die es gibt, und wenn Sie sie zu einer Seite verknüpfen oder mit etwas Komplexerem streamen.
quelle
NFS-Mounts können mit automount durchgeführt werden, wodurch der Mount bei einem Fehler weiterhin versucht wird. Die einzige Möglichkeit, ihn über die Pipes zu verwenden, besteht darin, einen VPN oder eine andere sichere Verbindung zu verwenden (eigentlich würde ich das aber nicht in Betracht ziehen, aber Sie klingen fest auf die Idee).
Selbst bei Verwendung von automount wird der Upload wahrscheinlich fehlschlagen oder beschädigt, wenn ein Netzwerkproblem vorliegt und Sie die Uploads auf den NFS-Mount stellen, es sei denn, Sie speichern die Datei lokal und kopieren sie dann bei erfolgreichem Upload.
quelle