PHPからrsyncのトリガーを引きたい場合の設定

PHPで更新ボタンを押したらrsyncを発動させるみたいなボタンを作る方法


【バックアップ元】
1.まずはapacheでsuできるように
# vi /etc/passwd
apacheユーザの最後の/sbin/nologinを/bin/bashに変更。


2.apacheユーザの秘密鍵と公開鍵を置く場所を作る
# mkdir /var/www/.ssh
# chmod 700 /var/www/.ssh
# chown apache.apache /var/www/.ssh


3.apacheユーザの秘密鍵と公開鍵を作る
# su - apache
$ ssh-keygen -t rsa
空でenter


【バックアップ先】
4.こちらもapacheでsuできるように
# vi /etc/passwd
apacheユーザの最後の/sbin/nologinを/bin/bashに変更。


5.公開鍵を置くフォルダを作る
# mkdir /var/www/.ssh
# chmod 700 /var/www/.ssh
# chown apache.apache /var/www/.ssh


【バックアップ元】
6.一旦exitでapacheを抜けて、作った鍵を転送する
# scp /var/www/.ssh/id_rsa.pub [バックアップ先IP]:/var/www/.ssh/


【バックアップ先】
7.送られてきたファイルの名前変更
# cat /var/www/.ssh/id_rsa.pub >> /var/www/.ssh/authorized_keys


【バックアップ元】
8.apacheにsuしてからsshで接続
ssh [バックアップ先IP]


なにも聞かれなかったら一旦成功!


【バックアップ元】と【バックアップ先】両方
9.rsyncで同期するフォルダにapacheへの権限を付与
chgrp -R apache /var/www/html/test
chown -R apache:apache /var/www/html/test
chmod -R 777 /var/www/html/test


【バックアップ元】
10.apacheにsuしてからrsyncのテスト
# rsync -auz -e ssh /var/www/html/test/ apache@[バックアップ先IP]:/var/www/html/test/


エラーが出ず、うまく転送されればOK!


あとは、PHPのexec関数とかでサクッと導入してやればOK!
exec('rsync -auz -e ssh /var/www/html/test/ apache@[バックアップ先IP]:/var/www/html/test/');



関連
秘密鍵公開鍵で他サーバに接続する方法