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

推薦する

div が隠しテキストを超え、div 部分の向こうの CSS コードを隠します

隠れる前に:隠れた後: CS: ...コードをコピーコードは次のとおりです。オーバーフロー:非表示;...

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

MySQL における EXISTS と IN の使用法の比較

1. 使用法: (1)EXISTSの使用 ucsc_project_batch a から、存在する場...

better-scrollプラグインのスライドできないバグについて(2021年プラグインで解決)

より良いスクロールの原則親コンテナーであるため、ラッパーの高さはコンテンツのサイズに応じて増加します...

dockerでifconfigが利用できない問題を解決する

最近、docker を学習していたときに、docker コンテナ内のネットワーク状態を照会するために...

CentOS のファイルと権限の基本操作チュートリアル

序文始める前に、ファイル属性とファイル属性を変更する方法について簡単に理解しておく必要があります。 ...

LinuxベースのSelenium環境を構成し、操作を実装する

1. Linux で Selenium を使用する1. Chromeをインストールする次のコマンドを...

SQL ROW_NUMBER() および OVER() メソッドのケーススタディ

構文フォーマット: row_number() over(partition by grouping ...

vue+el-upload は複数ファイルの動的アップロードを実現します

vue+el-upload 複数ファイルの動的アップロード、参考までに具体的な内容は以下のとおりです...

MySQL マスタースレーブの原理と構成の詳細

MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...

nginxのアップストリーム設定と機能の詳細な説明

設定例 アップストリームバックエンド{ サーバー backend1.example.com 重み=5...

Vue を使用してパブリック アカウントの Web ページを開発する方法

目次プロジェクトの背景始めるvue-cliでプロジェクトを作成するモバイル適応についてnormali...

mysql8.0.20 のデータディレクトリを移行する方法

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

CentOS7 での mysql 5.7.23 のバイナリ インストール

インターネット上のインストール情報は不均一で、落とし穴だらけです。インストールにはかなりの労力がかか...