- 締切済み
PHPでリモート間のファイル転送
linuxのサーバーが2台ありまして クライアントがブラウザ上でボタンを押したら サーバAにあるファイルをサーバBにコピーして同期をとりたいのですが、手順がわかっていてもそれをPHPで実現できずにいます。 PHPプログラム自体はサーバCに置いてあります。 手順として 1.sshでサーバBに接続 2.rootにログイン 3.rsyncでAよりBに該当ファイルの上書き 4.rootログアウト 5.切断 という流れなのですが。 ご教授いただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
余計な事かもしれませんが、やはりrootでログイン、というのがとても気になりますね。 rootでログインするには、どうしてもrootのパスワードを書いておく必要がありますから。 サーバBでsudoを使って一般ユーザ(ログインユーザ)にrsync権限を与えておいて、rsyncで上書きさせるスクリプトをシェルスクリプトにしておけば、WEBサーバから見る事は出来なくなります。仮に見えたとしても、rsyncの実行しか出来ないです。 おまけでした。
- yambejp
- ベストアンサー率51% (3827/7415)
であればソケット関数を参照ください。 AがクライアントとしてBに接続することになります。 ただ、rootになるようなコマンドをソースに 埋め込むことになるので運用には厳重注意が必要です
お礼
こういう関数もあるのですね プログラム実行関数の方ばかり注目していました。 とりあえず、コチラを参考に作業してみます。 ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
サーバーBにはApache+PHPは実装できないのですか? それであれば、サーバーBにHTTPベースでログインして sudo経由でsystem系関数でrsyncコマンドを発行して やるだけでいけそうですが・・・
お礼
クライアントの意向で サーバBにはファイルのみしか置けないのです。 書き忘れてしまいましたが、PHPのバージョンは4.3.9です。
お礼
ご指摘ありがとうございます。 ログイン~コピーの動作はシェルスクリプトの方で処理するようにしました。 とりあえず自分の希望の動作はできるようになったようです。