回答:
自分では使用していませんが、最近読んでいます。というデーモンがありますが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と同じ構成に従い、target
IP を変更します。
これで同期が設定されました。
アクティビティを確認できます tailf /var/log/lsyncd/lsyncd.log
提案してくれたMelBurslanに感謝します。
「SIOS Protection Suite for Linux」は、AWSでこれを提供できます。