rsyncの紹介
#
rsync は、オープンソースで、高速で、多機能な、完全および増分のローカルまたはリモートデータ同期バックアップツールです。
rsync
の概要#
rsync
の英語の正式名称はRemote synchronization サービスソフトウェア
で、略称はrsync
です。
rsync
はオープンソースの、高速な、多機能な、完全および増分のローカルまたはリモートのデータ同期(コピー)バックアップの優れたツールであり、ファイル同期の火の青い短剣です。
rsync
は Linux システム下でのデータミラーリングバックアップツールです。高速増分バックアップツールRemote Sync
を使用すると、リモート同期が可能で、ローカルコピーをサポートし、他のSSH
、rsync
ホストとの同期も行えます。
現在、クロスプラットフォームをサポートしており、Windows
とLinux
間でデータ同期が可能です。
rsync
の特徴#
rsync
は多くの特徴をサポートしています:
- 全体のディレクトリツリーとファイルシステムファイルをミラー保存できます。
- 元のファイルの権限、時間、ソフトリンク、ハードリンクなどを簡単に保持できます。
- 特殊な権限なしでインストール可能です。
- 高速:最初の同期時に、
rsync
はすべての内容をコピーしますが、次回は変更されたファイルと新しいファイルのみを転送します。rsync
はファイル転送データの過程で圧縮および解凍操作を実行できるため、より少ない帯域幅を使用し、ネットワークの負荷を軽減します。 - 安全:
scp
、SSH
などの方法でファイルを転送でき、もちろん直接のsocket
接続も可能です。 - 匿名転送をサポートし、ウェブサイトのミラーリングを容易にします。
まとめ:1 つの rsync コマンドは、scp
、cp
、rm
コマンドを統合したものであり、scp
、cp
、rm
よりも柔軟です。
- 高速:最初の同期時に、
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)#
rsync
はrsync-daemon
認証方式で、デフォルトでTCP
の873
ポートをリッスンします;rsync-daemon
認証方式はrsync
の主要な認証方式であり、私たちがよく使用する認証方式です;- そして、このモードでのみ、
rsync
はパスワードをファイルに書き込むことができます。
注意:rsync-daemon
認証方式では、サーバーとクライアントの両方にrsync
サービスをインストールする必要があり、サーバー側でrsync
を起動し、同時にrsync
設定ファイルを構成する必要があります。クライアントはrsync
サービスを起動しなくても、同期の正常な進行に影響はありません。
ssh
認証#
rsync
はssh
認証下で、システムユーザーを介して認証を行うことができ、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
コマンドのインストール#
一般的に、RedHat
、CentOS
にはこのツールが標準で付属していますが、ない場合は、直接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
をインストールするだけで済みます。