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はシンプルな虫眼鏡効果を実装します

推薦する

easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル

この記事は議論の出発点となることを目的としています。詳細なドキュメントと easycom の仕様につ...

MySQL ALTERコマンドの知識ポイントのまとめ

テーブル名を変更したり、テーブル フィールドを変更したりする必要がある場合は、 MySQL ALTE...

Linux のタイムドログ削除を実装する簡単な方法

導入Linux は、ファイル、ログ、電子メール、バックアップなどを自動的に生成できるシステムです。ハ...

Tomcat 例外の解決方法 (リクエスト ターゲットに無効な文字が見つかりました。有効な文字は RFC 7230 および RFC 3986 で定義されています)

1. シナリオ表示Tomcat ログに次の例外情報が時々報告されます。何が起こっているのでしょうか...

ダイナミックな波効果を実現するSVG+CSS3

ベクトル波 <svg viewBox="0 0 560 20" class...

Linux システムコマンドのメモ

この記事では、Linux システム コマンドについて説明します。ご参考までに、詳細は以下の通りです。...

リンクをクリックしたときにファイルのダウンロードダイアログボックスをポップアップ表示するには、HTML で href を使用します。

今日、新しい技を学びました。あまりやったことがなかったので、今まで知りませんでした...目的: リン...

TinyEditorはシンプルで使いやすいHTML WYSIWYGエディタです

数日前、国産の XHTML エディタを紹介しました。今日は、有名な海外の Web デザイン ブログl...

ウェブフロントエンドに対する一般的な攻撃とその防止方法

ウェブサイトのフロントエンド開発で発生するセキュリティ問題は、クライアントブラウザで実行されるコード...

nginxとlvsのメリットとデメリット、そして適切な使用環境

まず最初に、ロード バランシングとは何かについて説明します。ロード バランシングとは、リクエストの内...

Vue コード強調プラグインの総合的な比較と評価

目次総合的な比較アクティブの観点から機能的な観点から詳細な比較1. エース2. コードミラー3. モ...

LeetCode の SQL 実装 (183. 注文をしたことがない顧客)

[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...

VMware に Linux システム (Redhat8) と仮想マシンのネットワーク構成をインストールする方法

目次1. VMwareをインストールする1.1 VMwareworkstationsをダウンロードし...