リモート同士でrsyncってあんまりやらないんですかね?
前にやった記憶あるけど、忘れてしまって探したけど検索しても自分の探してる情報になかなかたどりつけなかった。
なんかもっと簡単な方法があったっけ・・・と思いつつ、とりあえず以下のような形。
A とB とCってサーバーがあって
AのuserとBのuser1は相互にsshでの接続許可
AのuserとCのuser2も相互にsshでの接続許可
Bのuser1とCのuser2間は sshで接続は許可されていない。
この状態でBからCにrsyncしたかった。
ちなみに鍵認証のパスワード入力いらずの接続前提。
Bサーバーのuser1の /home/user1/hoge.txt
を
Cサーバーのuser2の /home/user2/
にrsyncしたいとして
Bにuser1でログインしてから
rsync -av -e "ssh -l user Aサーバー ssh" /home/user1/hoge.txt user2@Cサーバー:/home/user2/
もっとやってしまうと
Aサーバーにuserでログインしている状態でこんな風
ssh -l user1 Bサーバー "rsync -av -e \"ssh -l user Aサーバー ssh\" /home/user1/hoge.txt user2@Cサーバー:/home/user2/"
phpとかのスクリプトからなんとかしたいときはexecとかでこれを実行すればさくっと同期はできるはず。
3000台のサーバーがあったとしてその中の1台(=Aサーバー)だけ全サーバーと相互にsshできるのであれば、その1台を中継させてどのサーバーからもrsyncできるってことになるので1台1台ログインしなくてもAサーバー上でスクリプト回せば簡単同期。
使わない時はAサーバーのsshを/etc/hosts.allow /etc/hosts.denyとか単純な方法ででも、各サーバーからAサーバーへののssh通信を制限しておいたほうがいいとは思う。