web-dev-qa-db-ja.com

リアルタイムのファイル同期

ディスクにファイルを書き込んだ直後に2つ以上のLinuxサーバー間でファイルを同期するために利用できるツールはありますか? rsyncコマンドはこれに適していません。cronでrsyncを設定した場合、設定できる最小時間は1分ですが、リアルタイムで必要なのでです。

22
Sourav

私自身は使用していませんが、最近読んだことがあります。 lsyncdと呼ばれるデーモンがあり、私はあなたが必要としていることを正確に実行していると思います。

それについてもっと読む [〜#〜]ここ[〜#〜]

20
MelBurslan

マルチマスターモードでの複数サーバー間のリアルタイムファイル同期

複数のサーバー間でファイルをリアルタイムで同期するためのlsyncdという優れたツールがあります。ここでは、2つのサーバーを試してみました。

ホスト:Server1およびServer2

使用OS:CentOS 7

両方のサーバーに以下のパッケージをインストールします。

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

両方のサーバーでssh-keyを生成し、authorized_keysファイルに追加します。 [server1の公開鍵をserver2のauthorized_keysに追加し、server2の公開鍵をserver1のauthorized_keysファイルに追加]

サーバー1の構成

/etc/lsyncd.confを開き、行の先頭で--を使用してデフォルト構成をコメント化し、以下の構成をファイルに追加します。

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

targetパラメータでターゲットIPを変更します。

必要に応じて、delayパラメータを変更できます。ここでは1秒に設定されています。

次に、ログディレクトリを作成します。

# mkdir -p /var/log/lsyncd

lsyncdサービスを自動的に開始できるようにします。

# systemctl enable lsyncd.service

サービスを開始します。

# systemctl start lsyncd.service

Server2の構成

Server1と同じ構成に従い、target IPを変更します。

これで同期が設定されました。

tailf /var/log/lsyncd/lsyncd.logからアクティビティを確認できます

MelBurslanの提案に感謝します。

5
Sourav

Inotify-tools

inotifyへのインターフェースを提供します。

inotifywait

このコマンドは単にinotifyイベントをブロックするため、シェルスクリプトでの使用に適しています。ファイルとディレクトリの任意のセットを監視でき、ディレクトリツリー全体を再帰的に監視できます。

inotifywatch

このコマンドは、ファイルシステムの使用状況の統計を収集し、各inotifyイベントの数を出力します。

5
Pro Backup

Syncthing はオプションの場合があります。それは非常に高速で、転送は暗号化されており、複数のプラットフォーム用のクライアントがあります。 「inotify」を使用して、変更されたファイルを即座に同期します。

3
njam

クラスタ化されたファイルシステムタイプのソリューションでこれにアプローチする必要があります。2つのマシン間の単純な同期では、リアルタイムの応答は得られません。

2
John
1
steve