• 締切済み

PHPでリモート間のファイル転送

linuxのサーバーが2台ありまして クライアントがブラウザ上でボタンを押したら サーバAにあるファイルをサーバBにコピーして同期をとりたいのですが、手順がわかっていてもそれをPHPで実現できずにいます。 PHPプログラム自体はサーバCに置いてあります。 手順として 1.sshでサーバBに接続 2.rootにログイン 3.rsyncでAよりBに該当ファイルの上書き 4.rootログアウト 5.切断 という流れなのですが。 ご教授いただければ幸いです。 よろしくお願いいたします。

みんなの回答

回答No.3

余計な事かもしれませんが、やはりrootでログイン、というのがとても気になりますね。 rootでログインするには、どうしてもrootのパスワードを書いておく必要がありますから。 サーバBでsudoを使って一般ユーザ(ログインユーザ)にrsync権限を与えておいて、rsyncで上書きさせるスクリプトをシェルスクリプトにしておけば、WEBサーバから見る事は出来なくなります。仮に見えたとしても、rsyncの実行しか出来ないです。 おまけでした。

SE3P-1308
質問者

お礼

ご指摘ありがとうございます。 ログイン~コピーの動作はシェルスクリプトの方で処理するようにしました。 とりあえず自分の希望の動作はできるようになったようです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

であればソケット関数を参照ください。 AがクライアントとしてBに接続することになります。 ただ、rootになるようなコマンドをソースに 埋め込むことになるので運用には厳重注意が必要です

参考URL:
http://www.php.net/manual/ja/ref.sockets.php
SE3P-1308
質問者

お礼

こういう関数もあるのですね プログラム実行関数の方ばかり注目していました。 とりあえず、コチラを参考に作業してみます。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

サーバーBにはApache+PHPは実装できないのですか? それであれば、サーバーBにHTTPベースでログインして sudo経由でsystem系関数でrsyncコマンドを発行して やるだけでいけそうですが・・・

SE3P-1308
質問者

お礼

クライアントの意向で サーバBにはファイルのみしか置けないのです。 書き忘れてしまいましたが、PHPのバージョンは4.3.9です。

関連するQ&A