ある顧客のために、仮想サーバー上で実行するWebアプリケーションを構築しました。これには、ファイルをアップロードするための機能が含まれていますが、オフィスのサーバーにそれらのファイルを保存したいと考えています。
これを行う最も簡単な方法は、インターネット経由でファイルシステムを仮想サーバーに直接マウントすることです。私は内部ネットワークを介してNFSをマウントした経験がありますが、このシナリオで機能するかどうかはわかりません。
何かご意見は?私はいつでも新しいソフトウェアを作成してファイルを転送できますが、これは簡単な修正です。
注:オフィスのサーバーは、Windows Hyper-V環境の仮想サーバーで実行されているUbuntu 12サーバーです。 WebアプリのVPSはUbuntu 11.04です。
まだ誰もsshfsについて言及していません。最新のLinuxディストリビューションを使用していて、リモートホストにSSHでアクセスできる場合は、次のように簡単です。
sshfs user@hostname:/remote/directory /local/directory
パフォーマンスは非常に良好です(ただし、ディレクトリ全体が必要な場合は、rsyncのようなストリーミング同期ほど高速ではありません)。
NFSは本質的に安全ではありません。インターネット経由で接続することは非常に悪い選択です。
私はrsyncについて言及している投稿が好きです。 cronを使用して転送を開始する代わりに、ファイルのアップロードを処理するコードからrsyncジョブを実行するだけでよいと思います。
アップロードが完了すると、ファイルがサーバーにrsyncされます。
転送するには、サーバーへの安全な接続を設定する必要があると思います。
必要に応じて、受信ファイルをリストに入れて転送し、コピーが成功した後で名前を削除し、接続に何かが発生した場合に備えて、フェイルオーバー機能をいくつか与えることができます。
他の誰かがすでに指摘したように、rsyncはファイルのグループまたは階層(ありがとう、スペルチェック)を処理するように設計されているため、これを達成することはそれほど難しくありません。
NFSは本質的に安全ではないかもしれませんが、それはサービスの障害ではありません。 TelnetとFTPも本質的に安全ではありませんが、オープンインターネットでは何十年も使用されています。暗号化されたVPNトンネルが確立されている場合、NFS暗号化の欠如は関係ありません。
また、ファイアウォールが特定のリモートホストアドレスのみがNFSマウントポイントに接続することを許可するように構成されている場合、インターネットトラフィックを傍受し、強力な復号化へのアクセス権を持つ3文字のエージェンシーを除いて、ベアNFS接続はほとんどハッキングから安全です。とにかく暗号化されたリモート接続をクラックします。
NFSのバージョンによっては、デフォルトでUDPを使用していることがわかります。これは、インターネットの信頼性の問題の原因である可能性があります。接続が混雑している場合、UDPパケットが失われる可能性があり、再送信は自動的には試行されません。信頼できる接続が必要な場合は、NFSがインターネットを介してTCPパケットを使用している(または使用のみが強制されている)ことを確認してください。
[〜#〜] nfs [〜#〜]はファイアウォールを介して実行できます。検索すると、このプロセスを試行して成功した他の人が見つかりますが、ポートを開くほど簡単ではなく、実行されているNFSのバージョンに依存しているようです。
rsyncは優れた提案であり、多くの柔軟性があります。ただし、これはアプリの外部で実行されるプロセスです。 rsyncは、ローカルファイルの更新の同期を処理し、ディレクトリ全体を他のフォルダと同期して維持できます。
sshは別の安全なオプションであり、1つのポートのみを開く必要があります。私は過去にWindowsとLinuxシステム間でこれを使用し、アプリ内からもプロセスのスケジュールからもうまく機能しました。
あなたが探しているものを達成する他の方法があると私は確信していますが、これらのファイルの種類、およびそれらをページにリンクするか、より複雑なものでストリーミングするかどうかについて、さらに情報が必要です。
NFSマウントは、automountを使用して実行できます。これにより、障害発生時にマウントが引き続き試行されますが、パイプ経由での使用を検討する唯一の方法は、vpnまたはその他の安全な接続を使用することです(実際には、検討しませんが、あなたはアイデアに固定されているように聞こえます)。
自動マウントを使用していても、ネットワークに問題があり、NFSマウントにそれらのアップロードを配置している場合、ファイルをローカルに保存してからアップロード成功時にコピーしない限り、アップロードが失敗するか破損する可能性があります。