ディレクトリ間の同期 (lsyncd)
概要
- リアルタイム同期の方法としては、以下の方法が考えられる
- 該当ディレクトリをリンクに置き換えてしまう方法
- unison を定期的に動かして、擬似リアルタイム同期する方法
- lsyncd でリアルタイムに同期
- lsyncd とは
- inotify という特定のディレクトリ内を監視して、ファイルに対してアクションがあった際に動作する仕組みを利用した同期するプログラムである
- ファイルのコピーや移動の実体は rsync が行っている (変更可能?)
- このページでは、lsyncd を使った同期方法を紹介する
設定方法
- 今回の条件
- 双方向同期の対象1: /path/to/A
- 双方向同期の対象2: /path/to/B
- lsyncd のインストール
$ sudo apt-get install lsyncd
- 設定ファイルの編集 (/etc/lsyncd/lsyncd.conf を作成)
settings{ logfile = "/path/to/logfile.log", statusFile = "/path/to/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, delay = 0, source = "/path/to/A", target = "/path/to/B", delete = "running", rsync = { owner = true, group = true } } sync{ default.rsync, delay = 0, source = "/path/to/B", target = "/path/to/A", delete = "running", rsync = { owner = true, group = true } }settings: グローバルな設定logfile: ログファイルの指定statusFile: ステータス管理ファイルの指定statusInterval: ステータス更新頻度 (秒)delay: 同期を開始するまでの遅延 (秒) (デフォルト: 15秒) (対象: 全体)
sync: 同期する内容の設定 (同期するペアの分だけ記述していく; 双方向するならsourceとtargetを入れ替えた sync も作成する)default.rsync: rsync の基本設定を使う (この他、default.rsyncsshが使える)source: 同期元target: 同期先delay: 同期を開始するまでの遅延 (秒) (対象: 個別;settingsでも指定している場合は、こちらが優先される)delete:true: 同期元にないファイルを同期先から削除false: 同期先のファイルを削除しないrunning: 同期元にないファイルを同期先から削除 (ただし、同期対象がサーバの場合はスタートアップするまで待機する?)
rsync: rsync の設定owner: 所有者情報保持の指定group: 所有グループ保持の指定
- 参考サイト
- lsyncd の前のバージョンでは
targetがtargetdirになっているので注意
- 設定を適用して実行
$ sudo service lsyncd restart
- 同期していない場合は、
/var/log/syslogを見る