nDiki

2003年11月20日 (木)

www.naney.org のファイルを全て Unison で同期

www.naney.org 上のコンテンツは、ローカルで一旦構築したファイル(ディレクトリ構造)を rsync で1方向に sync している。

しかし細かくみてみると

  • (L) ローカルで xml -> html し、サーバに送るファイル (html/ 以下のファイルなど)
  • (L) ローカル上で直接作成し、サーバに送るファイル (etc/ 以下のファイルなど)
  • (L) ローカルから定期的に送るファイル(webcamの画像など)
  • (S) サーバ上でインストールし、オリジナルがサーバにあるファイル (local/ 以下のファイルなど)
  • (L) サーバ上でインストール後、ローカルにコピーし改変して送るファイル(設定ファイルなど)
  • (S) サーバ上で生成されるファイル (Wikiデータベース、ログなど。var/ 以下)

とかなりかなり混在中。(L) はローカルにマスターがあるもの。(S) はサーバにマスターがあるもの。

できるだけ(L)と(S)を分離するようにはしているのだが(例えばサーバでインストールしたものの中で手元にコピーして編集したファイルは別ディレクトリにまとめておいて、サーバ上ではそちらへ symbolic link を張るとか)、これはこれで訳がわからなくなってしまう訳で。 rsync の実行も --exclude オプションがからみあい、--delete を付けられたり付けられなかったりとちょっとトリッキーな状態。

Unison で同期

日記システム関連の導入検討の前に、一旦ここら辺を整理し簡略化したい。 ということで、これからは Unison を使って www.naney.org とローカルを基本的に同期させてしまう事にした。

これならばどれがサーバオリジナルのファイルで、どれがローカルがオリジナルのファイルか迷わなくて済むようになると。

で、設定。ローカルの /usr/local/www.naney.org ディレクトリで同期させる事にする(ディレクトリ名は実際は違うところ)。 ローカルホストの ~/.unison/naneyorg.prf に

 times = true

 # Roots
 root = /usr/local/www.naney.org
 root = ssh://www.naney.org//home/naney

 # ignore backup
 ignore = Name *~
 ignore = Name .*~

 # ignore files
 ignore = Path .cpan
 ignore = Path .union
 ignore = Path var/log/access_log

 # hns
 ignore = Name referer_log
 ignore = Name referer_batta_log

と書く(ignore は一部抜粋。ディレクトリ等は実際は微妙に違う)。 で、

 unison naneyorg

で同期。 同期処理中に、(ログファイルなど)書き換わってしまうものがあるとそれを含むディレクトリの同期がごっそり abort させられるようなので、ignore を調整しつつ何回か実行して完全に同期をかける。

これで、ローカル・サーバどちらでファイルを書き換えてもOK。

rsync よりパスの指定が簡単だし(rsync はパス指定最後の / の有り・無しでの挙動の違いをいつも忘れてしまうので怖い)、なかなか使い勝手が良いかも。

ちなみにローカルで xml -> html しているファイル群だけは一旦別ディレクトリに生成してから、ローカルの www.naney.org 同期ディレクトリへ rsync で一方向 sync するようにしておいた(その後サーバと同期するという2段階処理)。

はまり所

最初 -times オプションを指定していなかったので、サーバからローカルへ同期したファイルの更新時刻が全て現在のものになってしまった。 後から -times オプションを指定して unison しなおすと、全部再同期しようとしてしまうようだ。 よくわからないので、一旦同期ディレクトリを消して全部取り直し。

スポンサード リンク
[ 11月20日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 1.3875s / load averages: 0.73, 1.12, 1.03
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker