• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlのsystem関数でrsyncが動かない)

perlのsystem関数でrsyncが動かない

このQ&Aのポイント
  • perlのsystem関数を使って、外部サーバーのフォルダ(999)をバックアップしたいと思っています。
  • 公開鍵を設定して、コマンド入力では動きます。$ rsync -av user1@xxx.xxx.xxx.xxx:/home/user1/public_html/hp/999 /home/user2/public_html/hp/
  • しかし、perlのsystem関数に入れると動かない問題があります。$retcodeは-1になり、apacheのエラーログには何も出ていません。原因は何でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

> ブラウザ経由だとユーザーとしてログインしていないですが、それでrsyncを動かすことはできるものでしょうか? rsync自体は問題なく実行できますが、ブラウザ経由で実行した場合のコマンド実行ユーザーはapacheの実行ユーザーになるので、wwwとかデーモン実行用のユーザーで実行されます。 > 外部サーバーのCGIで書き込みがあったときに、別のサーバーに同じデータを差分コピーしたいという目的でしたが、apacheやrsyncの実行ユーザーのことを考えると難しそうですね。 リアルタイム性に拘らなければ、cronを使って5分に1回rsyncを実行すると言った方法もあります。

yo3708
質問者

お礼

サーバーの負荷とリアルタイム性を考えて、cronを使わずにコピーできればと思いましたが、cronを使って同期させることにします。 どうもありがとうございました。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

apacheの話が出てくると言う事は、CGIとしてブラウザ経由で実行を行っているのでしょうか。 その場合、apacheの実行ユーザーとrsyncのユーザー、鍵の所有ユーザー等々のパーミッションが絡んできますが、その辺りの整合性は取れていますでしょうか。

yo3708
質問者

お礼

ありがとうございます。 外部サーバーのCGIで書き込みがあったときに、別のサーバーに同じデータを差分コピーしたいという目的でしたが、 apacheやrsyncの実行ユーザーのことを考えると難しそうですね。 フォルダのオーナーをwwwにして、パーミッションを777にしてみたりしましたがうまくいかないようです。 ブラウザ経由だとユーザーとしてログインしていないですが、それでrsyncを動かすことはできるものでしょうか?

関連するQ&A