• 締切済み

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

  • rsyncをPHPで行いたいのですが、

    いつもお世話になっております。 rsyncをPHPのexecコマンドから行いたいと思っているのですが、 現状、コピー元のサーバー、コピー先のサーバーともroot権限が無い状態ですので、 公開鍵、秘密鍵を作ることができない状況です(root権限無かったら作れないですよね?)。 なので、sshでpassを聞かれても良いのでrsyncを実行しようと思うのですが、 passを聞かれる場合でもPHPのexecコマンドからrsyncを実行することはできますでしょうか? 色々サイトを見ても鍵を生成してパスワードを省略することしか記載されていないので。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • sshへのログインをshell内に記述したい

    shellファイル内でrsyncとsshを使用したファイル同期を実現しようとしています。 同一サーバ内では問題なくできることを確認したのですが、 サーバ間でやり取りをしようとすると、sshのパスワード入力が必要になります。 このパスワード入力をshellファイル内にパスワードを記述することで 回避したいと考えているのですが、それは実現できるのでしょうか? その場合、shellファイル内にどのような記述をすればよいのでしょうか? とても困っています。ご存知の方がいましたら教えてください。 OSはLinuxを使用しています。 また、sshを使用しているコマンドはこんな感じです。 rsync -av -e ssh /var/www/html/***/ ホスト名:/var/www/html/***/

  • PHPでリモートでファイルを取るやり方。

    こんにちわ, 今PHPの学習をしています。 今ネットワークで接続されたPC1とPC2でPHPを作成し,PC1でApacheをたちあげて,webでそのアドレスを指定してphpを使用しています。 このとき,PC1のファイルはファイルシステム関数(dirやfile,fopenなど)でそのファイルの中身を見たりできるのですが,このときPC2のファイルを見ることは可能なのでしょうか。 ちなみにPC1,PC2ともにLinuxでtelnet,ftp,rlogin,rcp等のネットワーク系コマンドはサーバーが立ち上がっているので,使用できます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CentOS Stream鍵ファイルでrsync

    CentOS Stream release 8 鍵ファイルでrsync CentOS Stream release 8の2台のマシンでAからBにフォルダをコピーするシェルを書きたいです。 com-a:192.168.1.11 com-b:192.168.1.12 com-bのログインは鍵ファイルを作っています。 com-aからcom-bにsshでログインするところまではできています。 <192.168.1.11から> ■通常のログイン ssh -i 鍵ファイル root@192.168.1.11 ここまでできていrます。 パスワードは求められません。 ■rsyncでフォルダーのコピー rsync -auvz --delete -e ssh /dir-from root@192.168.1.12:/dir-to/ しかし、これではパスワードを求められます。 rsyncで鍵ファイルは指定できないですか?

  • リモートホスト内でのGUIでのファイルの複製(SFTP?)

    linuxサーバーで、windowsクライアントからGUIでホスト内でファイルの複製をしたいのですが、よい方法はないでしょうか? やりたいことは、例えば cp /home/a.dat /root/*.* といったようなことGUIで実現したいです OpenSSH(SFTP)+WinSCPでずばり可能なのですが、日本語のファイル名(UTF8)だとエラーが出てしまいます。 (日本語ファイル名(utf8)の表示はできるが、複製ができない。英語ファイル名なら複製可能) もちろんCUIならtelnetやSSHでログインしてcpすればよいのですが、ファイル名が日本語(UTF8)なのと、複数ファイルなので実用になりません。 Sambaでは一応可能なのですが、一旦クライアントへコピーした後、再度アップロードする形になってしまいます。 VNCやXDMCPは、サーバーにメモリが足りないため無理そうです。

  • サーバーAのファイルをサーバーBに転送したい

    こちらに質問すればいいのかわかりませんがお教えください。 サーバーAでCronでデータを毎日数回バックアップしています。 このデータをサーバーBに転送したいのですがどんな方法があるでしょうか? サーバーA(転送元): マネージドサーバー、root権限なし、SSH使えない サーバーB(転送先): 安めのレンタルサーバー、root権限なし、SSH使える 転送は1回当たり500MB以内です。 今はFTPで毎日自分のPCにバックアップファイルを転送しているのでこれをサーバーBにCronで転送したいと思っています。 サーバーAはSSHが使えませんがCronでshスクリプトを書けばサーバーBに転送できるのでしょうか?PHPでも大丈夫です(ファイルが大きくて転送制限が出たりセキュリティ的にどうかはわかりませんが・・・)。 どうぞよろしくお願い致します。

    • 締切済み
    • PHP
  • レンタルサーバ同士のバックアップ

    レンタルサーバ同士で毎日バックアップを取りたいと考えています。このサイトでいろいろと検索した所、rsync + sshで行うようですが、レンタルサーバ同士でも設定は可能なのでしょうか? 両方ともcrontabは使用可能です。 Aサーバの/home/hoge/backup/内をそのままミラーの形で、 Bサーバの/home/hoge/backup/にバックアップしたい。 ※Aサーバの/home/hoge/backup/には現状10個程あるDBのmysqldumpを毎日取り、1ヶ月後に削除する設定にしています。 ※Bサーバでの運用は考えていません。 Aサーバ:hoge1.com Linux 2.6.9-42.ELsmp Bサーバ:hoge2.com Linux 2.4.34.1-p3-nonsmp-JWH Aサーバのcrontabに見よう見まねで下記をセットした所、 rsync -avz -e ssh --delete /home/hoge/backup/ hoge2.com:/home/hoge/backup/ rsync error: syntax or usage error (code 1) at main.c(891) とエラーになりました。 それとも、rsync + sshは諦めて、ftpコマンドで送った方がよろしいのでしょうか?

  • OSを起動するとFTPサーバからファイル転送

    クライアントPC(Linux)を起動すると、 FTPサーバからテキストファイルが転送され、 そのファイルをテキストクライアントOS側で読み込みたいです。 このようなことは実現可能でしょうか? ヒントや参考サイトを教えて下さい。

  • phpの外部ファイル読み込みについて

    http://okwave.jp/qa/q7803076.htmlで質問させて頂きましたが、 質問内容がおかしかったので再度投稿させて頂きたいと思います。 a.phpファイル(クライアント表示) <?php include("b.php"); ?> b.phpファイル(読み込まれるファイル) for ($i = 1; $i <= 7; $i++) { } a.phpファイルの任意の場所にb.phpファイルに記載している「1~7」までの数字を表示させたいのですが、いろいろと試してみましたがa.phpファイルでクライアント表示させると「7」や「8」と表示されてしまいうまく表示ができませんでした。 b.phpファイルに「echo $i;」をすると、やはりa.phpファイルの表示させたくない場所に1234567が表示されてしまいます。 調べ方が悪いのか検索しても、解決策が見つからなかったのでご教授頂けたら幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SSHでのファイル転送時の処理について

    SSHでのファイル転送時の回線接続について質問です。 ○環境 ・サーバー windows server ・クライアント windows 2000 xp ・クライアントアプリ vb 以上の環境で、SSHクライアント、SSHサーバーを設定し、vbから、ファイル転送のバッチを起動し、テキストファイルをダウンロードしようと考えています。 回線接続として、ダイアルアップ接続と、インターネット接続が想定されます。 回線接続の種類により、ファイルと転送の処理が変わってくるのでしょうか? ご回答をよろしくお願いします。