lsyncdとrsyncを使用したサーバ間ファイル同期


はじめに

lsyncdとrsyncを用いてAWS上に構築したサーバ2台でファイル同期をします。
今回は片方のサーバのみにlsyncdインストール等を実施し、2台目は何もインストールしません。
よって、片方向のファイル同期となります。

構成

前提条件

同期元サーバから同期先サーバに対して、SSH接続が可能であること
 - 同期先サーバに設定しているセキュリティグループでインバウンドの22/tcpが許可されている
 - SSH公開鍵認証が設定済み

事前準備 (test2で実施)

同期先サーバにディレクトリを作成します。これが同期先ディレクトリにあたります。

$ sudo mkdir /home/ec2-user/test2
$ sudo chown ec2-user:ec2-user /home/ec2-user/test2

設定手順 (test1で実施)

1. 同期元ディレクトリの作成

$ sudo mkdir /home/ec2-user/test1

2. lsyncdのインストール

$ sudo yum install -y lsyncd

3. lsyncd.confの作成

lsyncd.confファイルを編集していきます。
settingsやrsyncのパラメータは任意で設定してください。

$ sudo vim /etc/lsyncd.conf
lsyncd.conf
settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  statusFile = "/var/log/lsyncd/lsyncd.status",
  insist = 1
}

sync{
  default.rsync,
  source = "/home/ec2-user/test1/",
  target = "ec2-user@同期先サーバのIPアドレス:/home/ec2-user/test2/",
  rsync = {
    archive = true,
    update = true,
    rsh = "/usr/bin/ssh -i /home/ec2-user/.ssh/秘密鍵ファイル -o StrictHostKeyChecking=no"
  }
}

4. lsyncdの再起動

サービス再起動後のステータスチェックでエラーが出ていないことを確認します。

$ sudo systemctl restart lsyncd
$ sudo systemctl status lsyncd

5. サービス自動起動の有効化

サーバ起動時にlsyncdが自動的に起動されるように設定します。

$ sudo systemctl enable lsyncd

6. 同期テスト用ファイル作成

同期元ディレクトリにテスト用のファイルを作成します。

$ sudo touch /home/ec2-user/test1/test1.txt

動作確認 (test2で実施)

test2にログインし、同期先ディレクトリを確認します。
test1.txtが存在し、同期されていることが確認できました。

$ ls /home/ec2-user/test2
test1.txt