使用シナリオ 既存のサーバー A と B の場合、サーバー A の指定されたディレクトリ (たとえば、 データミラーリングバックアップツール Rsync Rsync は非常に高速かつ柔軟なファイルコピー ツールです。ローカル マシンとリモート サーバー間のファイルのコピーをサポートします。 Rsync はデルタ転送アルゴリズムを使用します。このアルゴリズムでは、ソース ファイルとターゲット ファイル間の差分のみを転送する必要があるため、ネットワーク帯域幅の消費とコピーにかかる時間が大幅に削減されます。 Rsync は主にデータのバックアップとミラーリングに使用されます。 Rsync は、ファイル サイズまたは最終変更時刻の変更を比較して、ファイルを同期する必要があるかどうかを判断する高速チェック アルゴリズムを使用します。 Rsync を使用してリモート ホストに接続するには、ssh を使用する方法と rsync デーモンを使用する方法の 2 つがあります。ここでは、リモート ファイルのバックアップを実装するために Rsync が使用されます。 Rsyncのインストールと操作 Rsyncをインストールする サーバー A とサーバー B のターミナルでそれぞれ実行します。 sudo yum rsyncをインストールします インストールが完了すると、rsync 構成ファイルが etc/rsyncd.conf にあることがわかります。このファイルは、デーモンを同期に使用する場合に必要ですが、ここでは紹介されていません。 サーバーAとB間のパスワードなしのログインを構成する サーバーAは次を実行します: sshキー生成 ssh-copy-id サーバーBのIPアドレス ソースディレクトリとターゲットディレクトリを作成する サーバーAの場合: mkdir /home/paul/rsync サーバーBの場合: mkdir /home/paul/rsync サーバーAにテストファイルを作成する echo "サーバー A からこんにちは" >> /home/paul/rsync/demo.txt ファイル転送コマンドを実行する サーバー A で以下を実行します。 #(1) rsync -avPz --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync #(2) rsync -avPz --delete --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync サーバー B の /home/paul/rsync ディレクトリにも demo.txt が表示されます。 コマンド分析: (1)サーバーAの/home/paul/rsyncディレクトリにあるファイルをサーバーB(192.168.100.130)の/home.paul/rsyncにコピーします。 (2)ターゲット側のファイルとソース側のファイルを比較します。ターゲット側のファイルがソース側に存在しない場合は、ターゲット側のファイルを削除します。 Rsync の問題 Rsync は単なるファイル コピー ツールであり、ソース ファイルの追加、削除、変更操作を監視することはできません。ソース側で変更を行った後、rsync コマンドを実行して変更をターゲット側に同期する必要があります。 Rsync は、各同期の前にディレクトリ全体をスキャンする必要があります。ソースディレクトリに多数のファイルがある場合、スキャンに時間がかかることがあります。 ファイルシステムイベント監視ツール inotify inotify-tools は、inotify へのシンプルなインターフェースを提供します。これは C 言語で書かれたライブラリであり、コマンドライン ツールも含まれています。 inotify-tools の詳細な紹介については、こちらをクリックしてください: https://github.com/rvoicilas/inotify-tools/wiki inotify-toolsのインストール Centos7 システムの場合は、次の順番で実行します。 yum インストール -y epel-release yum --enablerepo=epel で inotify-tools をインストールします inotifywaitコマンドを使用してイベントを監視する 監視スクリプトは次のとおりです (inotifywait-rsync.sh)。 inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e 変更、削除、作成、属性 /home/paul/rsync/ | ファイルの読み取り中 する rsync -avPz --progress /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/ rsync -avPz --delete /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/ echo "${file} が同期されました" 終わり パラメータ解析
トリガーされたリスニング時間ごとに、inotifywait は do と done の間のコードを実行します。ここでは、前述の rsync コマンドを呼び出してファイルを同期します。 監視スクリプトをcrontabに追加する crontab -e * * * * * sh /home/paul/inotifywait-rsync.sh 参考文献 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法
この記事の内容: ページ中空マスクレイヤー、ページ中空マスクガイドレイヤー、画像中空マスク通常のマス...
ヘッドと DTD はページには表示されませんが、Web ページの重要な要素です。 なぜ失敗したのでし...
clear プロパティを使用してフロートをクリアすることはよくあることであり、clear プロパティ...
1. CSSスコープの使用(スタイル分割) Vue では、CSS スタイルを現在のコンポーネントでの...
nginx.conf を構成するときには常に何らかの問題が発生します。ここでは、よくある問題とその解...
目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...
1. my.cnfを変更する #全体的な効果としては、グローバルがオンになっている場合はテーブルとロ...
ゴミ箱は Linux ユーザー、Windows ユーザー、Mac ユーザーにとって非常に一般的なので...
悲観的ロック悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加...
フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...
CSS でテキストを中央揃えにするプロパティは非常に簡単に実現できます。text-align:cen...
次の図に示すように: 仮想マシンと Docker を使用するとき、「なぜ Docker は VM よ...
目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...
目次ケースシナリオ問題を解決するまとめケースシナリオ本日、オンラインで問題が発見されました。監視範囲...
最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...