元のアドレス http://blog.csdn.net/5iasp/article/details/13630927
Linux での 2 つのサーバー向けのリアルタイム ファイル同期スキームの設計と実装
次の要件を想定します:
2 つのサーバーを想定します:
192.168.0.1 ソースサーバーにはディレクトリ /opt/test/
192.168.0.2 ターゲットサーバーにはディレクトリ /opt/bak/test/
実装の目的は、 2 つのサーバーがリアルタイムで同期されます
実装方法: rsync+inotify-tools の組み合わせによって実装されます
ソフトウェアをインストールする必要があります:
1. rsync 同期ソフトウェア
ソースサーバーとソースサーバーの両方にインストールする必要がありますターゲットサーバー
ソースサーバー: これは rsync クライアントであり、設定する必要はありません
ターゲットサーバー: これは rsync サーバーであり、/etc/rsyncd.conf の内容を設定する必要があります
インストール後、次のことが必要です新しい設定ファイルを作成するには: /etc/rsyncd.conf
設定ファイルは次の場所にあります: /etc/
ファイルの内容は次のとおりです:
uid = root
gid = root
use chroot = no
最大接続数 = 10
厳密モード = はい
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file= =/var/run/rsyncd.log
[ www]
path= /opt/bak/test
comment=analyze
readonly=false
hostsallow=*
2 inotify-tools ツール
このツールは、以下を必要とするリアルタイム ファイル監視ツールです。 Linux オペレーティング システムのカーネル サポート。カーネル サポートには少なくともバージョン 2.6.13 が必要です。
次のように実行して、バージョン 2.6.13 をサポートしているかどうかを確認します。
uname -r バージョンを表示します。 el6.x86_64
は、バージョン 2.6.32 が 2.6.13 より大きいため、サポートされていることを意味します。 実行:
ll /proc/sys/fs/inotify
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches
出力は 3 つあります。つまり、inotify はデフォルトでサポートされており、inotify-tools ツールはサポートされていない場合は、新しいバージョンの Linux オペレーティング システムを使用する必要があります。バージョンが要件を満たしていれば、インストールできます。
inotify-tools をインストールすると、次の 2 つのファイルが関連するインストール ディレクトリに生成されます:
ll /usr/local/bin/
total 88-rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
-rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch
は、インストールが成功したことを意味します。
注: inotify はソース サーバーにインストールする必要がありますが、inotify はターゲット サーバーにインストールする必要はありません。
3. 関連スクリプト:
ソースサーバー上に新しいスクリプトを作成します:
inotify_bak.sh
src=/opt/test/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e ファイル読み取り中に $src を閉じる、削除する、作成する
/usr/bin/rsync -arzuq $src 192.168.0.2::www/
done
注: ここでの www は、ターゲット サーバー/etc/rsyncd.conf で設定されているモジュール名です: [www]
実行許可を与える: chmod +x inotify_bak.sh
次に、 inotify_bak.sh を実行します。実行用のバックグラウンド
ターゲットサーバー: 最初に rsync バックグラウンドサービスを起動します: /usr/bin/rsync --daemon
ソースサーバー: inotify_bak.sh &
を実行します テスト: を作成します。ソース サーバーのディレクトリとファイルに新しいディレクトリが追加されると、inotify_bak.sh スクリプトがそれを検出し、ターゲット サーバーの関連ディレクトリに同期しますログ ファイルを表示できます: /opt/soft/log/rsync.logコマンドは次のとおりです。リアルタイムの同期状況を観察します。
tail -f /opt/soft/log/rsync.log
上記では、Linux 上の 2 つのサーバー間のファイルのリアルタイム同期スキームの設計と実装について、さまざまな側面を含めて紹介しています。PHP チュートリアルに興味のある友人にとって役立つことを願っています。