ホームページ > バックエンド開発 > PHPチュートリアル > Linux 上の 2 つのサーバー間のリアルタイム ファイル同期スキームの設計と実装

Linux 上の 2 つのサーバー間のリアルタイム ファイル同期スキームの設計と実装

WBOY
リリース: 2016-07-30 13:31:28
オリジナル
1156 人が閲覧しました

元のアドレス 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

total 0

-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

#!/bin/bash

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/

echo " ${file} が rsync されました" >>/opt/soft/log/rsync.log 2>&1

done

注: ここでの www は、ターゲット サーバー/etc/rsyncd.conf で設定されているモジュール名です: [www]

実行許可を与える: chmod +x inotify_bak.sh

次に、 inotify_bak.sh を実行します。実行用のバックグラウンド

4. 起動について


ターゲットサーバー: 最初に 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 チュートリアルに興味のある友人にとって役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート