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


22

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


2
1つの読み取り/書き込みサーバーから1つ以上の読み取り専用サーバーへの同期が必要ですか、それとも双方向の同期(両方向の伝搬を使用)、またはn方向が必要ですか?双方向にしたい場合、競合をどのように解決しますか?
ジル 'SO-悪であるのをやめる'

回答:


18

自分では使用していませんが、最近読んでいます。というデーモンがありますがlsyncd、これはまさにあなたが必要とすることをしていると思います。

詳細はこちら


2
私見、これは受け入れられた答えであるべきです。 lsyncdを使用inotifyし、fsレベルで最速にする必要があります。詳細はgithub.com/axkibe/lsyncdをご覧ください。そのページから:Lsyncdはローカルディレクトリツリーイベントモニターインターフェイス(inotifyまたはfsevents)を監視します。数秒間イベントを集約および結合し、1つ(または複数)のプロセスを生成して、変更を同期します。デフォルトでは、これはrsyncです。したがって、Lsyncdは軽量のライブミラーソリューションであり、新しいファイルシステムやブロックデバイスを必要とせず、比較的簡単にインストールでき、ローカルファイルシステムのパフォーマンスを妨げません。
SACHIN GARG 16

5

Inotify-tools

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

inotifywait

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

inotifywatch

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


4

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

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のauthorized_keys公開鍵をserver2に、server2の公開鍵をserver1のauthorized_keysファイルに追加]

Server1の構成

行の先頭で/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と同じ構成に従い、targetIP を変更します。

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

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

提案してくれたMelBurslanに感謝します。


設定機能の遅延パラメーターが無効です。代わりにmaxDelays変数を使用してください。このツールを実装しました。本当に強力です。
ハサヌザマンサッター

3

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


2

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


実際、これらのサーバーはAWSにあります。したがって、クラスター環境を取得することはできません!他の方法はありませんか?
-Sourav

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.