自分では使用していませんが、最近読んだことがあります。 lsyncd
というデーモンがあります 、これはまさにあなたが必要としているものだと思います。
詳細はこちら
マルチマスター モードでの複数サーバー間のリアルタイム ファイル同期
lsyncd
という優れたツールがあります リアルタイムで複数のサーバー間でファイルを同期するには、ここでは2つのサーバーで試しました。
ホスト:Server1 および Server2
使用OS:CentOS7
以下のパッケージを両方のサーバーにインストールします。
# 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
サーバー 2 の構成
Server1 と同じ構成に従い、target
を変更します。 IP.
これで同期が設定されました。
tailf /var/log/lsyncd/lsyncd.log
からアクティビティを確認できます
MelBurslan の提案に感謝します。
inotify ツール
inotify
へのインターフェースを提供する 、構成:
inotifywait
このコマンドは、inotify イベントをブロックするだけなので、シェル スクリプトでの使用に適しています。ファイルとディレクトリの任意のセットを監視でき、ディレクトリ ツリー全体を再帰的に監視できます。
inotifywatch
このコマンドは、ファイルシステムの使用統計を収集し、各 inotify イベントのカウントを出力します。