読者です 読者をやめる 読者になる 読者になる

kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

CentOS6にlsyncdをインストールしてdirectモードで動かす

lsyncdをインストールした時のメモです。
通常はrsyncモードで動かすと思いますが、今回の要件では
ローカルでのディレクトリ同期だったので、directモードにしました。

本家のgithub

lsync依存パッケージのインストール

$ yum list installed | egrep "libxml2-devel|lua-devel|lua-static" //入っているかどうかの確認
$ sudo yum -y install libxml2-devel lua-devel lua-static

lsyncdのインストール

lsyncdはrpmforgeのリポジトリにあります。 リポジトリ追加を行っていない場合は、別途リポジトリの追加が必要です。

$ sudo yum install -y lsyncd

version 2.1がインストールされました。

起動オプションの設定

pidfileを吐くように設定します。

$ sudo cp -ap /etc/sysconfig/lsyncd /etc/sysconfig/lsyncd_20150815
$ sudo vi /etc/sysconfig/lsyncd
$ diff -u /etc/sysconfig/lsyncd_20150815 /etc/sysconfig/lsyncd
--- /etc/sysconfig/lsyncd_20150815      2015-08-15 19:16:19.671691805 +0900
+++ /etc/sysconfig/lsyncd       2015-08-15 19:16:51.536611294 +0900
@@ -1,3 +1,3 @@
 # Put your lsyncd options here
 
-#OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"
+OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"

起動ファイルの修正

リンク先を参考に起動ファイルの修正を行います。

$ sudo cp -ap /etc/init.d/lsyncd /etc/init.d/lsyncd_20150815
$ sudo vi /etc/init.d/lsyncd
$ diff -u /etc/init.d/lsyncd_20150815 /etc/init.d/lsyncd
--- /etc/init.d/lsyncd_20150815 2013-03-20 20:54:23.000000000 +0900
+++ /etc/init.d/lsyncd  2015-08-15 19:20:06.129853473 +0900
@@ -20,7 +20,7 @@
 OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"
 
 if [ -e /etc/sysconfig/lsyncd ]; then
-       /etc/sysconfig/lsyncd
+       source /etc/sysconfig/lsyncd
 fi
 

テストディレクトリ作成

$ cd ~
$ mkdir {src,target}
$ ll
合計 8
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 18:58 2015 src
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 18:58 2015 target

設定ファイルの作成

$ sudo vi /etc/lsyncd.conf

設定ファイルを作成します。
インストールしただけではできないので新規です。

下記はversion2.1での書き方です。 version 2.0ではsettings {の部分をsettings = {として、=でつなげてあげる必要があります。

settings {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        nodaemon = false,
}
sync{
        default.direct,
        source="/home/vagrant/src/",
        target="/home/vagrant/target/"
}

設定値

  • logfile
    • ログファイルの場所を指定します。
    • エラーメッセージとかが表示されます。
  • statusFile
    • 監視の状態が表示されます。
    • どのディレクトリを見張っているかなど
    • 初回同期のコマンドイメージなど
  • nodaemon
    • デーモンで起動させる設定です。
  • default.direct
    • directモードで同期します。
  • source
    • 同期の元となるディレクトリです。
  • target
    • 同期の先となるディレクトリです。

起動

$ sudo /etc/init.d/lsyncd start
lsyncd を起動中:                                           [  OK  ]

テスト

$ ll
合計 8
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 19:24 2015 src
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 19:24 2015 target
$ ll -a src/
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:24 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
$ ll -a target/
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:24 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
$ touch src/test.txt
$ ll -a target
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:26 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
-rw-r--r--  1 root    root       0  8月 15 19:26 2015 test.txt
$ echo "hello world" > src/test.txt 
$ cat target/test.txt
hello world