回答:
自分では使用していませんが、最近読んでいます。というデーモンがありますがlsyncd、これはまさにあなたが必要とすることをしていると思います。
詳細はこちら
lsyncdを使用inotifyし、fsレベルで最速にする必要があります。詳細はgithub.com/axkibe/lsyncdをご覧ください。そのページから:Lsyncdはローカルディレクトリツリーイベントモニターインターフェイス(inotifyまたはfsevents)を監視します。数秒間イベントを集約および結合し、1つ(または複数)のプロセスを生成して、変更を同期します。デフォルトでは、これはrsyncです。したがって、Lsyncdは軽量のライブミラーソリューションであり、新しいファイルシステムやブロックデバイスを必要とせず、比較的簡単にインストールでき、ローカルファイルシステムのパフォーマンスを妨げません。
へのインターフェースを提供しますinotify:
inotifywaitこのコマンドはinotifyイベントをブロックするだけなので、シェルスクリプトでの使用に適しています。任意のファイルとディレクトリのセットを監視でき、ディレクトリツリー全体を再帰的に監視できます。
inotifywatchこのコマンドは、ファイルシステムの使用統計を収集し、各inotifyイベントのカウントを出力します。
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ファイルに追加]
行の先頭で/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
Server1と同じ構成に従い、targetIP を変更します。
これで同期が設定されました。
アクティビティを確認できます tailf /var/log/lsyncd/lsyncd.log
提案してくれたMelBurslanに感謝します。
「SIOS Protection Suite for Linux」は、AWSでこれを提供できます。