ほぼリアルタイムにファイル同期

  • 2015年4月24日
  • Linux
  • 0件

2つのサーバー間で、できるだけリアルタイムでファイルを同期する必要があったので、それの設定を備忘録を兼ねて…。

まず受信側の設定。
rsyncdというデーモンを動かします。
xinetd経由で呼び出されるので、まずはこれがインストールされていることが最低条件です。
yumで普通にインストール可能なはずです。

rsyncdはデフォルトで起動しないようになっているので、それを変更します。
/etc/xinetd.d/rsyncを編集します。

service rsync
{
        disable         = no
        flags           = IPv4
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure += USERID
}

disabledをyesからnoにすると起動するようになります。
また、IPv4を使う場合はflagsを変えます。
変更後、xinetdをrestartすればポート873で待ち受けます。

次に、同期するディレクトリの設定です。
/etc/rsyncd.confを編集します。

[Publicdir]
        path = /var/www/html/public
        comment = public directory
        hosts allow = hogehoge.com
        hosts deny = *
        read only = no
        uid = user
        gid = user

pathが同期するディレクトリ。
hosts allowは接続を受け付けるホスト名。
uidとgidはファイルを読み書きするユーザーのidとそのグループを設定します。

以下は送信側の設定。
lsyncdというデーモンを動かします。
rpmforgeリポジトリから提供されているのでこれもyumで普通にインストール可能です。
(設定によっては–enablerepo=rpmforgeオプションが必要です)

設定は/etc/lsyncd.confを編集します。

settings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/var/log/lsyncd.stat",
}
 
sync{
  default.rsync,
  source="/usr/local/public/",
  target="senduser@hoge2.com::Publicdir",
}

settingsの部分はログファイルとかの設定。
syncの部分が同期に関する設定。
sourceには受信側と同期するディレクトリを指定します。
targetには受信側にログインするユーザーとホスト名、受信側の同期ディレクトリを指定します。
「Publicdir」の部分に、受信側のrsyncd.confの[]で囲んだ部分の名称を指定します。

設定が終わったらlsyncdをserviceコマンドや/etc/init.dの中の起動スクリプトで起動させます。

送信側の対象ディレクトリ内のファイルに変更が発生すると、ほぼリアルタイムで受信側にrsyncでファイルが転送されます。

Linuxの最新記事8件