banner
十一

十一

Stay hungry, stay foolish.

ファイル同期の火の青い短剣:rsync

rsyncの紹介#

rsync は、オープンソースで、高速で、多機能な、完全および増分のローカルまたはリモートデータ同期バックアップツールです。

rsyncの概要#

rsyncの英語の正式名称はRemote synchronization サービスソフトウェアで、略称はrsyncです。
rsyncオープンソースの高速な多機能な完全および増分のローカルまたはリモートデータ同期(コピー)バックアップの優れたツールであり、ファイル同期の火の青い短剣です。
rsyncは Linux システム下でのデータミラーリングバックアップツールです。高速増分バックアップツールRemote Syncを使用すると、リモート同期が可能で、ローカルコピーをサポートし、他のSSHrsyncホストとの同期も行えます。
現在、クロスプラットフォームをサポートしており、WindowsLinux間でデータ同期が可能です。

rsyncの特徴#

rsyncは多くの特徴をサポートしています:

  • 全体のディレクトリツリーとファイルシステムファイルをミラー保存できます。
  • 元のファイルの権限、時間、ソフトリンク、ハードリンクなどを簡単に保持できます。
  • 特殊な権限なしでインストール可能です。
    • 高速:最初の同期時に、rsyncはすべての内容をコピーしますが、次回は変更されたファイルと新しいファイルのみを転送します。rsyncはファイル転送データの過程で圧縮および解凍操作を実行できるため、より少ない帯域幅を使用し、ネットワークの負荷を軽減します。
    • 安全:scpSSHなどの方法でファイルを転送でき、もちろん直接のsocket接続も可能です。
    • 匿名転送をサポートし、ウェブサイトのミラーリングを容易にします。
      まとめ:1 つの rsync コマンドは、scpcprmコマンドを統合したものであり、scpcprmよりも柔軟です。

rsyncの 3 つの動作モード#

  • local ローカルモード -- cp
  • Access via remote shell リモートshell経由でアクセス -- scp
  • daemonデーモンモード -- 最も一般的

rsyncファイル同期のモード#

  • 完全:すべてのデータを転送して上書きします。
  • 増分:差分部分のデータのみを転送し、rsync は独自のquick checkアルゴリズムを使用して増分データ転送を実現します。

rsyncの機能紹介#

  • cpコマンドに似ている —— ローカルバックアップデータ転送
  • scpコマンドに似ている —— リモートバックアップデータ転送
  • rmコマンドに似ている —— 差異のない同期バックアップを実現
  • lsコマンドに似ている —— ローカルファイル情報の確認

rsyncの認証プロトコル#

rsyncコマンドを使用してファイルを同期する前に、まずremoteホストにログインし、認証プロセスで使用されるプロトコルは 2 種類あります:

  • sshプロトコル
  • rsyncプロトコル
    普段の使用では、最も多く使用されるのはrsync-daemon方式です。

rsync認証(rsync-daemon)#

  • rsyncrsync-daemon認証方式で、デフォルトでTCP873ポートをリッスンします;
  • rsync-daemon認証方式はrsyncの主要な認証方式であり、私たちがよく使用する認証方式です;
  • そして、このモードでのみ、rsyncはパスワードをファイルに書き込むことができます。
    注意:rsync-daemon認証方式では、サーバーとクライアントの両方にrsyncサービスをインストールする必要があり、サーバー側でrsyncを起動し、同時にrsync設定ファイルを構成する必要があります。クライアントはrsyncサービスを起動しなくても、同期の正常な進行に影響はありません。

ssh認証#

  • rsyncssh認証下で、システムユーザーを介して認証を行うことができ、rsync上でsshトンネルを介して転送します。これはscpツールに似ています;
  • この時、同期操作はrsyncで定義された同期フォルダに限定されません;
  • 873ポートを使用して転送する必要はありません。
    注意:ssh認証方式では、サーバーとクライアントの両方にrsync設定ファイルを構成する必要はなく、両方がrsyncサービスをインストールするだけで、両方がrsyncを起動する必要はありません。
#
rsyncサーバー側はrsyncのデーモンプロセスを起動する必要はなく、remote hostのユーザー名とパスワードを取得すれば直接rsyncでファイルを同期できます
#
rsyncサーバー側はデーモンプロセスを起動しないため、設定ファイル/etc/rsyncd.confも必要ありません

ssh認証プロトコルはscpの原理と同じで、同期中にパスワードを入力したくない場合は、ssh-keygen -t -rsaでトンネルを開通させます。

//この方法はデフォルトで -e ssh を省略しており、以下と等価です:
rsync -avz /SRC -e ssh [email protected]:/DEST 
    -a  //ファイルのホストが変わり、タイムスタンプは変わらない
    -V  //詳細情報の表示
    -z  //データ転送の圧縮

//ポートを変更する必要がある場合は、次のようにします:
#sshプロトコルのポートを変更しました。デフォルトは22です
rsync -avz /SRC -e "ssh -p2222" [email protected]:/DEST

rsyncコマンド#

rsyncコマンドのインストール#

一般的に、RedHatCentOSにはこのツールが標準で付属していますが、ない場合は、直接yum install -y rsyncでインストールできます。

#rsyncコマンドが必要なパッケージを確認
[root@node1 ~]# yum provides */bin/rsync
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:00:27 ago on Mon 10 May 2021 03:27:01 PM CST.
rsync-3.1.3-9.el8.x86_64 : A program for synchronizing files over a network
Repo        : @System
Matched from:
Filename    : /usr/bin/rsync

rsync-3.1.3-9.el8.x86_64 : A program for synchronizing files over a network
Repo        : base
Matched from:
Filename    : /usr/bin/rsync

#rsyncコマンドをインストール
[root@node1 ~]# yum -y install rsync

#インストール成功
[root@node1 ~]# which rsync
/usr/bin/rsync

rsyncコマンドの形式#

//Rsyncのコマンド形式には以下の3つがあります:
    rsync [OPTION]... SRC DEST
    rsync [OPTION]... SRC [USER@]HOST:DEST
    rsync [OPTION]... [USER@]HOST:SRC DEST

//上記の3つのコマンド形式に対応して、rsyncには3つの異なる動作モードがあります:
1)ローカルファイルをコピーします。SRCとDESTのパス情報に単一のコロン":"区切りが含まれていない場合、この動作モードが起動します。
#コマンドの例
[root@localhost ~]# rsync -avz abc /opt/123
2)リモートシェルプログラム(rsh、sshなど)を使用して、ローカルマシンの内容をリモートマシンにコピーします。DSTパスアドレスに単一のコロン":"区切りが含まれている場合、このモードが起動します。
#コマンドの例
[root@localhost ~]# ssh [email protected] 'ls -l /root'
3)リモートシェルプログラム(rsh、sshなど)を使用して、リモートマシンの内容をローカルマシンにコピーします。SRCアドレスパスに単一のコロン":"区切りが含まれている場合、このモードが起動します。
#コマンドの例
[root@localhost ~]# rsync -avz [email protected]:/etc/yum.repos.d /root/

rsyncコマンドのパラメータ詳細#

-v, --verbose         詳細モード出力
-q, --quiet           簡略出力モード
-c, --checksum        チェックスイッチをオンにし、ファイル転送の検証を強制
-a, --archive         アーカイブモード、再帰的にファイルを転送し、すべてのファイル属性を保持します。-rlptgoDと等しい
-r, --recursive       サブディレクトリを再帰的に処理
-R, --relative        相対パス情報を使用
-b, --backup          バックアップを作成します。目的地に同じファイル名が既に存在する場合、古いファイルを~filenameとして再命名します。--suffixオプションを使用して異なるバックアップファイルのプレフィックスを指定できます。
--backup-dir          バックアップファイル(例:~filename)をディレクトリに保存します。
-suffix=SUFFIX        バックアップファイルのプレフィックスを定義
-u, --update          更新のみを行い、すでにDSTに存在し、ファイル時間がバックアップするファイルよりも新しいファイルをスキップします。(更新されたファイルを上書きしません)
-l, --links           ソフトリンクを保持
-L, --copy-links      通常のファイルとしてソフトリンクを処理
--copy-unsafe-links   SRCパスのディレクトリツリー以外を指すリンクのみをコピー
--safe-links          SRCパスのディレクトリツリー以外を指すリンクを無視
-H, --hard-links      ハードリンクを保持
-p, --perms           ファイルの権限を保持
-o, --owner           ファイルの所有者情報を保持
-g, --group           ファイルのグループ情報を保持
-D, --devices         デバイスファイル情報を保持
-t, --times           ファイルの時間情報を保持
-S, --sparse          スパースファイルを特別に処理してDSTのスペースを節約
-n, --dry-run         どのファイルが転送されるかを表示
-W, --whole-file      ファイルをコピーし、増分検出を行いません
-x, --one-file-system ファイルシステムの境界を越えない
-B, --block-size=SIZE 検証アルゴリズムで使用されるブロックサイズ、デフォルトは700バイト
-e, --rsh=COMMAND     rsh、ssh方式でデータ同期を指定
--rsync-path=PATH     リモートサーバー上のrsyncコマンドのパス情報を指定
-C, --cvs-exclude     CVSと同じ方法で自動的にファイルを無視し、転送したくないファイルを除外します
--existing            既にDSTに存在するファイルのみを更新し、新しく作成されたファイルはバックアップしません
--delete              SRCにないDSTのファイルを削除します
--delete-excluded     このオプションで指定された除外ファイルも削除します
--delete-after        転送終了後に削除します
--ignore-errors       IOエラーが発生しても削除を実行します
--max-delete=NUM      最大でNUM個のファイルを削除します
--partial             理由により完全に転送されなかったファイルを保持し、次回の転送を加速します
--force               ディレクトリを強制的に削除します。空でなくても
--numeric-ids         数字のユーザーおよびグループIDをユーザー名およびグループ名にマッチさせません
--timeout=TIME        IPタイムアウト時間、単位は秒
-I, --ignore-times    同じ時間と長さのファイルをスキップしません
--size-only           ファイルをバックアップするかどうかを決定する際に、ファイルサイズのみを確認し、ファイル時間は考慮しません
--modify-window=NUM   ファイルが同じ時間であるかどうかを決定する際に使用されるタイムスタンプウィンドウ、デフォルトは0
-T --temp-dir=DIR     DIRに一時ファイルを作成します
--compare-dest=DIR    DIR内のファイルを比較してバックアップが必要かどうかを決定します
-P                    --partialと同等
--progress            バックアッププロセスを表示
-z, --compress        バックアップファイルを転送時に圧縮処理します
--exclude=PATTERN     転送しないファイルパターンを指定します
--include=PATTERN     除外せずに転送する必要があるファイルパターンを指定します
--exclude-from=FILE   FILEに指定されたパターンのファイルを除外します
--include-from=FILE   FILEに指定されたパターンにマッチするファイルを除外しません
--version             バージョン情報を表示
--address             特定のアドレスにバインドします
--config=FILE         他の設定ファイルを指定し、デフォルトのrsyncd.confファイルを使用しません
--port=PORT           他のrsyncサービスポートを指定します
--blocking-io         リモートシェルでブロッキングIOを使用します
-stats                特定のファイルの転送状態を表示します
--progress            転送時に転送プロセスを表示します
--log-format=formAT   ログファイル形式を指定します
--password-file=FILE  FILEからパスワードを取得します
--bwlimit=KBPS        I/O帯域幅を制限します。KBytes per second
-h, --help            ヘルプ情報を表示します

rsyncの設定#

rsyncの使用方法は 3 つあります:

  • モード 1:local ローカルモード
  • モード 2:Access via remote shell リモートshell経由でアクセス
  • モード 3:daemon デーモンモード(最も一般的)

モード 1:ローカルモード#

ローカルモードは直接コマンドを使用できます。

# コマンド形式
rsync [OPTION...] SRC... [DEST]

モード 2:リモートshell経由でアクセス#

このモードは一般的にローカルからリモートshellコマンドを使用してプッシュおよびプルします。

# コマンド形式
# プル:pull
rsync [OPTION...] [USER]@HOST:SRC... [DEST]

# プッシュ:push
rsync [OPTION] SRC... [USER]@HOST:DEST

注意:アクセス側と被アクセス側の両方にrsyncコマンドをインストールする必要があります
説明:ファイルを転送する際、まずソースディレクトリと目的ディレクトリのファイルの特徴コードを比較し、特徴コードが異なる場合にのみ転送が行われます。
重要:実際のシナリオでは通常rsync+sshの鍵認証方式が使用され、目的はパスワードなしでログインすることです。

モード 3:デーモンモード#

デーモンモードでは、異地でのリアルタイム同期が可能です。前の 2 つのモードと比較して、より複雑で、より強力です。
注意:このモードでは、ソースサーバーにアプリケーションrsync + inotify-toolsツールまたはrsync + sersyncツールをインストールする必要があります。ターゲットサーバーにはrsyncをインストールするだけで済みます。

rsync + inotify-tools方式#

rsync + sersync方式#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。