2011-07-13 3 views
1

**はじめに:ネットワークに関する知識はあまりありません。私が設定が間違っていると書いたら、私はもう一度やり直します。 **サーバークラスタ内のファイルをServerAからServerBに移動

私は、serverA、serverB、serverCというサーバークラスターをすべてファイアウォールの背後にあり、スイッチ上に置いています。 serverAからserverBへファイルをプログラムで移動したい。過去に私がserverA上のファイルをserverA上の別の場所に移動しなければならなかったとき、私はexec( "sudo mv file1/home/user/file1")と呼んでいます。複数のサーバーが関わっている場合でもこれを行うことはできますか?

編集:すべての素晴らしい回答者。私はサーバがどのようにクラスタになっているのか調べ、サーバがマウントされているかどうかを調べます。みんなありがとう!あなたたちは私のヒーローです!

+0

クラスタの仕組みによって異なります。サーバは共通のファイルシステムを共有しているのですか、それともそれらの間でファイルを同期するプロセス(rsyncなど)がありますか?設定に関する詳細な説明を提供し、この質問を[serverfault.com](http://serverfault.com/)に移動することを検討してください。 –

答えて

1

すべてのサーバにマウントされているnfsのような共通の共有を使用している場合、ファイルにmvを使用できます。

このオプションがない場合は、scpまたはrsyncを使用してファイルを別のサーバーに転送できます。

1

まず、ファイルを移動するためにネイティブ関数を使用する必要があります。 renamehttp://us2.php.net/renameを参照してください。両方の場所でアクセス許可が正しいことを確認する必要があることを意味します(apacheユーザーが所有する必要がある可能性が高いです)

実際の質問に答えるには、設定に大きく依存します。一般的に、ファイルを移動できる別のサーバーはマウントポイントを持っていて、他のディレクトリのように見えるので、コードをまったく変更する必要はありません。おそらく、これを実行する最良の方法です。

FTPなどを使用する必要がある場合は、必要なプロトコルに応じて適切なライブラリを使用する必要があります。

1

あなたはSSH

を経由してネットワーク経由でファイルをコピーするには、LinuxのコマンドラインツールSCPを使用できることを確認してSSH証明書はサーバー上で設定されていることを確認。

例:

exec("sudo cp [-Cr] [[[email protected]]ServerA:]/path/to/file [more...] [[[email protected]]SERVERB:]/path/to/file 
+0

編集のヒントについてはhttp://stackoverflow.com/editing-helpをご覧ください。あなたの投稿のいくつかで書式を修正しました。あなたのコードを4つのスペースでインデントして、シンタックスを強調表示したコードブロックを作成します。 –

1

このオプションは、おそらくセットアップは少し複雑すぎるですが、私はUDP hole Punchingを指してみましょう。

すべてのサーバーのアドレスがわかっていて、固定されている場合は、ファイアウォールとNATされたネットワークを通過できます。このような作品をportpunching原則

、:

AとBの2つのホスト、独自のプライベートネットワーク内の各とします。何の穴はまだ

  • しかし、用意されていないことから、
  • は、ほとんどの場合、両方の試みが失敗互いに
  • へのUDP接続を作成しよう

    • A及びB::N1、N2は2つのNATデバイスですNATデバイスN1およびN2はUDP変換ステートを作成し、を一時的に外部ポート番号
    • に割り当てます.AおよびBは変換されたポート上で直接NATデバイスに接続します。 NATデバイスは、以前に作成した翻訳状態を使用し、AへのパケットとB

    これでも動作しますが、AとBのアドレスを送信互いに不明です。この場合、公開されている中間システムS が必要です。。詳細は、Wikipedia articleを参照してください。