LinuxはRsync+Inotifyを使用してローカルとリモートのデータのリアルタイム同期を実現します。

LinuxはRsync+Inotifyを使用してローカルとリモートのデータのリアルタイム同期を実現します。

0x0 テスト環境

本社本番サーバーと支社バックアップサーバーはリモートデータバックアップが必要です。環境は以下の通りです。

**セントロス6.5**
本番サーバーディレクトリ: /home/zytest/files
バックアップサーバディレクトリ: /home/zytest/files
ユーザー名/パスワード: zytest/zytest

0x1 本番サーバー環境構築

0x1.1 gccコンパイラとrsyncをインストールする

yum インストール gcc rsync -y

0x1.2 inotifyをサーバーにコピーして解凍する

cd /root
tar xfvz inotify-tools-3.13.tar.gz

0x1.3 インストールするinotifyディレクトリを入力してください

 inotify-tools-3.13 をインストールします
 ./configure
 作る
 インストールする     
 
 /usr/local/bin/inotifywait ##インストールが成功したかどうかを確認します

0x2 バックアップサーバ環境構築

0x2.1 xinetdとrsyncをインストールする

yum xinetd rsync をインストール -y

0x3 次のコンテンツは2つのサーバー間で同期されます

ユーザー追加 -u 600 zytest 
 パスワード zytest    
 ジテスト
 su - zytest -c 'mkdir /home/zytest/files' ##同期ディレクトリを作成する

0x4 バックアップサーバーでrsyncdを構成する

0x4.1 /etc/xinetd.d/rsyncを編集し、以下の内容に変更します。

無効にする = はい ==> 無効にする = いいえ
フラグ = IPv6 ==> フラグ = IPv4
server_args = --daemon ==> server_args = --daemon --config=/etc/rsyncd.conf

0x4.2 /etc/rsyncd.confを編集し、次のスクリプト情報を追加します。

uid = ルート
gid = ルート
chroot を使用する = いいえ
最大接続数 = 1000
厳密モード = はい
ポート = 873
pid ファイル = /var/run/rsyncd.pid 
ロックファイル = /var/run/rsyncd.lock 
ログファイル = /var/log/rsyncd.log
# ユーザー「zytest」の場合は以下、他のユーザーの場合は変更
[ザイテスト]
パス = /home/zytest
エラーを無視する
認証ユーザー =zytest
シークレットファイル = /home/rsync-dst.ps
読み取り専用 = いいえ
リスト = 偽

Ps: rsyncd設定ファイルはxinetd上にあるため、バックアップサーバーはxinetdをインストールします。

0x4.3 呼び出されたパスワードファイルにパスワードを書き込み、権限を付与する

echo zytest:zytest >> /home/rsync-dst.ps
chmod 600 /home/rsync-dst.ps

0x4.4 xinetd経由でrsyncを開始する

 /etc/rc.d/init.d/xinetd を再起動

0x5 プライマリサーバー上のinosyncスクリプトファイルを構成する

0x5.1 ** ##/root/inosync を編集し、スクリプト コードを追加します**

#!/bin/sh
#chkconfig: 3 78 10

#このファイルはコンパイル時から存在します
[ ! -f /usr/local/bin/inotifywait ] の場合
それから
 echo "開始できません。ファイル inotifywait が存在しません!"
 出口
フィ

#このファイルは実行可能なシェルスクリプトです
[ ! -f /usr/local/bin/inosync.so.1 ]の場合
それから
 echo "管理者に連絡してください。inosync.so.1 が存在しません!"
 出口
フィ

ケース「$1」
 '始める')
 /usr/local/bin/inosync.so.1 &
;;

'停止')
 pid=`ps -ef | grep -v grep | grep "inotifywait" | awk '{print $2}'`
 キル -9 $pid 2>&1
;;

'再起動')
 $0 ストップ
 0ドルからスタート
;;

エサック

0x5.2 スクリプトの権限を付与し、起動時に開始するように設定する

chmod a+x /root/inosync
 cp /root/inosync /etc/rc.d/init.d

0x5.3 構成呼び出しメインスクリプトファイル /root/inosync.so.1

rhost=**バックアップサーバのIP**
ユーザー=zytest
src=/home/zytest/ファイル
dst=zytest
#dst は、dst サーバーのファイル /etc/rsyncd.conf 内の [zytest] に対応します。
ログ=/root/inosync.log
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w%f %e' -e close_write,create,move,delete,attrib $src | ファイルの読み取り中
 する
 エコー == rsync 開始 == >> $log
 rsync -avP --password-file=/home/rsync-src.ps --delete $src $user@$rhost::$dst >> $log 2>&1
 エコー -- rsyncd -- >> $log
 日付 >> $log
 echo "${files} が rsync されました " >> $log 2>&1
 終わり

PS: %T の後にスペースがあり、%f と %e の間にもスペースがあります

0x5.4 inosync.so.1 スクリプトに権限を与え、/usr/local/bin にコピーします。

chmod a+x /root/inosync.so.1
cp /root/inosync.so.1 /usr/local/bin

0x5.5 呼び出されたパスワードファイルにパスワードを書き込み、権限を付与する

echo zytest >> /home/rsync-src.ps
 chmod 600 /home/rsync-src.ps

0x6 ターゲットサーバーはinosyncを自動的に開始するように設定し、inosyncサービスをオンにします

chkconfig --level 3 inosync オン
/etc/rc.d/init.d/inosync 開始

0x7 テスト終了

運用サーバーの /home/zytest/files ディレクトリにファイルとフォルダを作成し、バックアップ ストレージでもファイルとフォルダが同期されているかどうかを確認します。同期されている場合は、同期は成功しています。

プロセスはログを通じて確認できます

末尾 -f /root/inosync.log

要約する

Linux で Rsync+Inotify を使用してローカルとリモートのデータをリアルタイムで同期する方法について説明したこの記事はこれで終わりです。rsync+inotify を使用してリモートのリアルタイム同期を実現する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux で rsync を使用する方法
  • Rsync は他のすべてのバックアップ ツールよりも優れています。特定のディレクトリを手動でブロックできますか?
  • サーバー間の Python rsync フォルダー同期スクリプト
  • Python+rsyncは指定されたフォーマットでファイルを正確に同期します
  • BrowserSyncで自動更新が開始されます
  • Centos7 での Rsync+crontab 定期同期バックアップ
  • Rsync を使用して Linux で自動バックアップを実行する
  • Java Rsync 同時データ移行と検証の詳細な説明

<<:  Alibaba Cloud ESC に MYSQL8.0 をインストールするチュートリアル

>>:  Vueはシンプルな虫眼鏡効果を実装します

推薦する

MySQL関数の簡単な紹介

目次1. 数学関数2. 文字列関数3. 日付関数4. 暗号化機能主な MySQL 関数は次のように紹...

WMLとは何ですか?

WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...

将来的に人気のあるウェブサイトのナビゲーションの方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

ローカルアイデアアクティベーションサーバーの構築に関する詳細なチュートリアル

序文ブロガーはアイデアIDEを使用しています。アイデア公式が最近サードパーティのアクティベーションサ...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

ユーザー中心設計

最近、デジタル デザイン コミュニティで「誰が何を担当するのか」という明らかな混乱についてよく質問さ...

MySQLでよく使われるSQLとコマンドの入力からデータベースの削除、そして終了まで

目次開始と停止データベース関連の操作データベーステーブル関連の操作制約関連デフォルトの制約高度なデー...

MySQLのバッファプールの詳細な説明

MySQL のデータはディスクに書き込む必要があることは誰もが知っています。ディスクの読み取りと書き...

Linuxルートの初期値を設定する方法の簡単な分析

Ubuntu ではデフォルトで root ログインが許可されていないため、初期の root アカウン...

CentOS はローカル yum ソースを使用して LAMP 環境を構築するグラフィック チュートリアル

この記事では、ローカル yum ソースを使用して CentOS 上に LAMP 環境を構築する方法に...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

マークアップ言語 -

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

MySQL 8.0.21 のインストール手順と問題解決

公式サイトをダウンロードまず公式ウェブサイトにアクセスしてMySQLをダウンロードしてくださいリンク...

Javascriptはセキュリティ検証に整合性属性を使用します

目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...