rsyncといえば、ファイルをバックアップする上でよく利用されるコマンドだ。
それにファイルの更新を認識するカーネルの機能であるinotifyを組み合わせ、ファイルが更新されると同時にバックアップを行う事が出来るのが、今回紹介する『lsyncd』だ。

今回は、CentOS 7にこの『lsyncd』をインストール、実際に使ってみる事にする。
なお、バックアップ先のサーバでは事前にrsyncをデーモンで起動できる環境が必要だが、こちらを参考に構築済とする。

1.『lsyncd』のインストール

まずは、『lsyncd』をインストールする。
コンパイルを行う際に必要となるパッケージを以下のコマンドでインストール。

bash
yum -y install libxml2-devel lua lua-devel lua-static pkgconfig gcc asciidoc

次に、lsyncdのコンパイルを行う際に必要となる環境変数を設定する。

bash
export LUA_CFLAGS='-I/usr/include -lm -ldl' export LUA_LIBS='/usr/lib64/liblua.a'

下準備が完了したら、lsyncdをダウンロードしコンパイル、インストールする。

bash
wget http://lsyncd.googlecode.com/files/lsyncd-2.1.5.tar.gz tar xzvf lsyncd-2.1.5.tar.gz cd lsyncd-2.1.5 ./configure && make && make install

これで、lsyncdがインストールできた。
ただ、今のままだと設定ファイルが存在しないので、exampleフォルダ配下にあるテンプレートからコピーしてくる。

bash
cp examples/lrsync.lua /etc/lsyncd.conf

2.lsyncd.confの設定

さて、先ほどテンプレートファイルからコピーしてきた設定ファイル『lsyncd.conf』を編集してみよう。
以下のように編集する。

properties
---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings { statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="バックアップ元ディレクトリ", target="バックアップ先サーバ::バックアップモジュール名", }

特に注意したいのが、「setting = {」となっている所を、「setting {」と書き換える所。
このままで起動させると、lsyncdは以下のようなエラーが表示されて正常に動作しない。

properties
Warn: settings = { ... } is deprecated. please use settings{ ... } (without the equal sign)

設定ファイル設置後、systemdでサービスを管理させるためのファイルを設置する。

/usr/lib/systemd/system/lsyncd.service

properties
[Unit] Description=Live Syncing (Mirror) Daemon After=network.target [Service] Type=simple Nice=19 EnvironmentFile=-/etc/sysconfig/lsyncd ExecStart=/usr/bin/sh -c 'eval `/usr/local/bin/lsyncd -nodaemon /etc/lsyncd.conf`' [Install] WantedBy=multi-user.target

3.実行

さて、それでは実際にサービスを開始し、自動起動設定をしてみよう。

bash
systemctl start lsyncd systemctl enable lsyncd

これで、バックアップ元ディレクトリで作成、編集されたファイルは自動的にバックアップ先サーバに同期されるようになった。