Unisonを使った双方向同期
このページは旧サイトからの転載です。元ページはJan 2001頃にかかれました。
インストール †
同期を行う双方のマシンにUnisonをインストールする必要があります。
FreeBSD の パッケージがあるので、それを利用します。
ports にもあるが、うまくコンパイルできませんでした。
unisonでの同期 †
簡単な例 †
同期を取るディレクトリを、
host1:/home/unison/sync host2:/home/unison/sync
とします。
host2% unison -batch ssh://username@host1//home/unison/sync /home/unison/sync
で同期が取れます。双方向同期なので、host1から行っても同じです。
ホームディレクトリが、/home/unison ならば、
host2% unison -batch ssh://username@host1/sync /home/unison/sync
でも構いません。つまり、絶対パスのときは、// にすることが重要です。ローカルのパスは普通に指定できます。例では絶対パスしか使っていませんが、相対パスも使えます。
使用法 †
client% unison ssh://username@server//absremotedir /localdir client% unison ssh://username@server/relremotedir /localdir
上が絶対パスで指定する場合で、下が相対パスで指定する場合の例です。
推奨オプション †
- -batch またはautoを付けないと、質問を大量にするので注意。
使用できそうなオプション †
- -auto コンフリクトファイル以外の質問をしません。
- -backups 変更されたファイルに対しバックアップファイルを作成します
- -batch 質問なし。コンフリクトファイルはスキップ。
- -silent 通常出力なし
定期的に同期を取る †
外部のWEBとローカルの編集用の同期をとる例です。
間違ってProfileを消してしまったので復旧作業中です。
sync_web.sh
/usr/local/bin/unison web_down /usr/local/bin/unison web_up /usr/local/bin/unison web_d_up
なぜ3種類あるのか忘れました。
unisonは双方向同期なので、基本的には一発で大丈夫なはずなのですが。
コンフリクトはバッチ処理時には無視して、あとで手動で直す方針です。
profileを使ってパラメータを指定しています。以下は個々のprofileです。
.unison/web_down.prf
#download root = /path/public_html root = ssh://user@server//path/public_html # ignore = Name *~ ignore = Name .*~ ignore = Name *.LCK # batch = true # log = true
.unison/web_up.prf
.unison/web_d_up.prf
Appendix †
1日に可能な転送量(理論値。オーバヘッドなし) †
同期を取れる限界値の参考に、ビットレートからの1日に転送可能なデータ量への変換表を用意しました。ただ単位が変わっているだけです。
1日= 24時間 = 1440分 = 86400秒
1M = 1024k, 1G = 1024M = 1048576kB
1kbps = 10.55MB/day
5kbps = 52.73MB/day
10kbps = 105.5MB/day
30kbps = 316.4MB/day
64kbps = 675MB/day
128kbps = 1350MB/day = 1.32GB/day
256kbps = 2700MB/day = 2.64GB/day
512kbps = 5400MB/day = 5.27GB/day
1Mbps = 10800MB/day = 10.55GB/day
1.5Mbps = 16200MB/day = 15.82GB/day
3Mbps = 32400MB/day = 31.64GB/day
8Mbps = 86400MB/day = 84.36GB/day