自鯖→プロバイダ鯖へのパスフレーズレスrsyncについて
良いか悪いかは別として、楽な開発環境を作る上でrsyncによるシンジケートは重宝する。
ローカル自鯖をマスター、プロバイダ鯖をスレーブと位置付けて設定していく。
まずは両サーバともにrsyncが入っているか確認。
うちの場合は
マスター
rsync-2.6.8-3.1
スレーブ
rsync-2.6.3-1
が入っていることを確認した。
次に、両サーバの同期ディレクトリを特定する。
マスター
/tmp/ideo_from/
スレーブ
/tmp/ideo_to/
と適当にディレクトリを作成した。
プロバイダなのに/tmpに作れるのかよという突っ込みには目もくれず進めていく。
まずは簡単に手動実行。
上記例の場合スレーブ鯖のユーザを指定していないので、マスター鯖にログインしているユーザアカウントをスレーブにいるかのように振舞うが、もちろんそんなわけがないので
rsync -avz -e ssh /tmp/ideo_from/ ユーザ名@スレーブ鯖FQDN:/tmp/ideo_to
とすれば特定ユーザで転送を行うことができる。
これをパスフレーズレスにするには以下のようにすればよい。
- マスター鯖で cd ~
- マスター鯖で ssh-keygen -t dsa
- パスフレーズは何も入れないでEnter
- マスター鯖で ssh-copy-id -i .ssh/id_dsa.pub スレーブ鯖ユーザID@スレーブ鯖FQDN
基本的にはこれで
すればパスフレーズレスになる。
ただし当然のことながら、マスター鯖で上記命令を実行するユーザと、同期先スレーブ鯖のユーザが一致していないとパスワードは聞かれる。
なのでcron化する場合には、実行ユーザをどのように指定するかが大事と思われる。
参考サイト