- ベストアンサー
※ 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のエラーログには何も出ていません。原因は何でしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> ブラウザ経由だとユーザーとしてログインしていないですが、それでrsyncを動かすことはできるものでしょうか? rsync自体は問題なく実行できますが、ブラウザ経由で実行した場合のコマンド実行ユーザーはapacheの実行ユーザーになるので、wwwとかデーモン実行用のユーザーで実行されます。 > 外部サーバーのCGIで書き込みがあったときに、別のサーバーに同じデータを差分コピーしたいという目的でしたが、apacheやrsyncの実行ユーザーのことを考えると難しそうですね。 リアルタイム性に拘らなければ、cronを使って5分に1回rsyncを実行すると言った方法もあります。
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5238/13705)
回答No.1
apacheの話が出てくると言う事は、CGIとしてブラウザ経由で実行を行っているのでしょうか。 その場合、apacheの実行ユーザーとrsyncのユーザー、鍵の所有ユーザー等々のパーミッションが絡んできますが、その辺りの整合性は取れていますでしょうか。
質問者
お礼
ありがとうございます。 外部サーバーのCGIで書き込みがあったときに、別のサーバーに同じデータを差分コピーしたいという目的でしたが、 apacheやrsyncの実行ユーザーのことを考えると難しそうですね。 フォルダのオーナーをwwwにして、パーミッションを777にしてみたりしましたがうまくいかないようです。 ブラウザ経由だとユーザーとしてログインしていないですが、それでrsyncを動かすことはできるものでしょうか?
お礼
サーバーの負荷とリアルタイム性を考えて、cronを使わずにコピーできればと思いましたが、cronを使って同期させることにします。 どうもありがとうございました。