hypermkt blog

複数サーバーでデータを同期する方法

January 06, 2014

newrsynclogo

ウェブサーバーを複数台運用している場合、sitemap.xmlなどのデータを全ウェブサーバーで共有したい場合があります。

解決方法としては

  • rsyncでファイルを定期的に転送

  • NFS

とありますが、ちょっとしたファイル程度ならrsyncでデータを転送してしまうのが簡単です。

指定フォルダをリモートサーバーの特定の場所と同期する

下記を実行するとローカルの/var/www/html/sitemapにあるデータをリモート先(hoge@192.168.xxx.xxx)の/var/www/htmlにデータを再起的にパーミッション、オーナー、タイムスタンプを維持して転送します。また—deleteを指定する事でローカルのsitemap内のファイルが削除された場合、リモート先でも自動的に削除され完全に同期する事が出来ます。

rsync -av —delete /var/www/html/sitemap hoge@192.168.xxx.xxx:/var/www/html

リモート先sshのポート番号を指定して同期する

rsync -av —delete -e “ssh -p 10022” /var/www/html/sitemap hoge@192.168.xxx.xxx:/var/www/html

上記コマンドをシェルスクリプトにし、cronで定期的に実行する事でデータを同期する事が出来ます。


都内で働くWebアプリケーションエンジニア。主にサーバーサイド。最近はRuby/Railsでコードを書くのが楽しい。