Rsync は、高速で非常に用途の広いファイル コピー ツールです。ローカルにコピーしたり、任意のリモート シェルを介して別のホストとの間でコピーしたり、リモート rsync デーモンとの間でコピーしたりできます。動作のあらゆる側面を制御し、コピーするファイル セットの非常に柔軟な指定を可能にする多数のオプションを提供します。これは、ソース ファイルと宛先の既存のファイルの違いのみを送信することにより、ネットワーク経由で送信されるデータの量を削減するデルタ転送アルゴリズムで有名です。 Rsync は、バックアップとミラーリングに広く使用されており、日常使用のための改良されたコピー コマンドとしても使用されています。
Rsync は、サイズまたは最終変更時刻が変更されたファイルを探す「クイック チェック」アルゴリズム (デフォルト) を使用して、転送する必要があるファイルを見つけます。ファイルのデータを更新する必要がないことがクイック チェックで示された場合、(オプションで要求されたように) 保存されているその他の属性の変更は、目的のファイルで直接行われます。
rsync の追加機能のいくつかは
- リンク、デバイス、所有者、グループ、権限のコピーのサポート
- GNU tar と同様の除外オプションと除外オプション
- CVS が無視するのと同じファイルを無視するための CVS 除外モード
- ssh や rsh など、透過的なリモート シェルを使用できます
- スーパーユーザー権限は必要ありません
- 遅延コストを最小限に抑えるためのファイル転送のパイプライン化
- 匿名または認証済み rsync デーモンのサポート (ミラーリングに最適)
構文
rsync コマンドの基本的な構文は次のとおりです:
# rsync options source destination
一般的に使用されるオプションの一部:
- –削除 :送信者 (システム) に存在しないファイルを削除します。
- -v :詳細出力
- -e 「ssh オプション」 :ssh をリモート シェルとして指定します
- -a :アーカイブ モード
- -r :ディレクトリに再帰
- -z :ファイルデータを圧縮
Linux での rsync コマンドの例
ローカル システム上のファイルとディレクトリを同期する
# rsync -zvr /usr/ /root/sync-data/
上記のコマンドは、/usr フォルダーのすべてのファイルとディレクトリを /root/sync-data フォルダーにコピーまたは同期します。
パーミッションを保持したままローカルでファイルを同期
-a オプションは次のことを行います:再帰機能を提供し、パーミッション、シンブリック リンク、ユーザーおよびグループ情報を保持します。
# rsync -azv /usr/ /root/sync-data/
ローカル マシンからリモート サーバーへのファイルの同期/コピー
# rsync -avz /root/sync-data/ [email protected]:/tmp
上記のコマンドは、/root/syc-data フォルダーのデータをリモート マシンにコピーし、/tmp フォルダー内のルート ユーザー認証情報を使用します。
リモート サーバーからローカル マシンへのファイルの同期/コピー
# rsync -avz [email protected]:/tmp/src /opt [email protected]'s password: receiving file list ... done src/ src/debug/ src/kernels/ sent 38 bytes received 99 bytes 10.96 bytes/sec total size is 0 speedup is 0.00
上記のコマンドは、リモート サーバーの /tmp/src フォルダーをローカル マシンの /opt フォルダーにコピーします。
ssh 経由のリモート同期
rsync を使用すると、ssh、つまり安全な通信を介してファイルをリモート マシンと同期したり、その逆を行うことができます。 「rsync -e ssh」を使用して、使用するリモート シェルを指定します。この場合、rsync は ssh を使用します。
# rsync -avz -e ssh [email protected]:/var/lib/rpm /opt The authenticity of host '192.168.2.149 (192.168.2.149)' can't be established. RSA key fingerprint is 45:fc:99:57:34:ba:6a:bb:e3:6f:00:bb:ca:15:3d:c3. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.149' (RSA) to the list of known hosts. [email protected]'s password: receiving file list ... done rpm/ rpm/.rpm.lock rpm/Basenames rpm/Conflictname ............ rpm/Triggername sent 422 bytes received 12521670 bytes 115410.99 bytes/sec total size is 35467264 speedup is 2.83
同期の進行状況を表示
オプション「–progress」を使用して、同期の進行状況を表示できます。
# rsync -avz --progress [email protected]:/usr /opt [email protected]'s password: receiving file list ... 44609 files to consider usr/ usr/tmp -> ../var/tmp usr/bin/ usr/bin/.fipscheck.hmac 65 100% 63.48kB/s 0:00:00 (xfer#1, to-check=44605/44609) usr/bin/.ssh.hmac 65 100% 63.48kB/s 0:00:00 (xfer#2, to-check=44604/44609) usr/bin/GET 14519 100% 248.75kB/s 0:00:00 (xfer#3, to-check=44603/44609) usr/bin/HEAD 14519 100% 232.44kB/s 0:00:00 (xfer#4, to-check=44602/44609) ............
rsync にオプションを含める/除外する
rsync を使用すると、同期中にファイルまたはディレクトリを含めたり除外したりするパターンを指定できます。
# rsync -avz --include 'P*' --exclude '*' [email protected]:/var/lib/rpm/ /opt [email protected]'s password: receiving file list ... done ./ Packages Providename Provideversion Pubkeys sent 129 bytes received 9395561 bytes 695977.04 bytes/sec total size is 28999680 speedup is 3.09
上記の例には、「P」で始まるファイルまたはディレクトリのみが含まれ、他のすべてのファイルは除外されます。 (rsync exclude ‘*’ を使用)
ファイルがソースに存在しない場合、ターゲットでファイルを削除します
ソースに同じファイルが存在しない場合、rsync の「–delete」オプションを使用して、ターゲットで作成されたファイルを削除できます。
# rsync -avz --delete [email protected]:/var/lib/rpm/ /opt
例:9 「-I」オプションを使用してソースとターゲット間の変更を表示する
ソースとターゲットの間の変更を表示
「-i」オプションを使用して、ソース ファイルとターゲット ファイルの間の変更を表示できます。例:
# rsync -avzi [email protected]:/var/lib/rpm/ /opt [email protected]'s password: receiving file list ... done >f+++++++ .rpm.lock >f+++++++ Basenames >f+++++++ Conflictname >f+++++++ Dirnames >f+++++++ Filedigests >f+++++++ Group >f+++++++ Installtid >f+++++++ Name >f+++++++ Obsoletename >f+++++++ Requirename >f+++++++ Requireversion >f+++++++ Sha1header >f+++++++ Sigmd5 >f+++++++ Triggername sent 328 bytes received 3126214 bytes 297765.90 bytes/sec total size is 35467264 speedup is 11.34
転送ファイルのサイズを制限する
「–max-size」オプションを使用して、rsync が特定のサイズを超えるファイルを転送しないように強制できます。
# rsync -avz --max-size='200k' [email protected]:/var/lib/rpm/ /opt
上記のコマンドは、rsync が 200K 以下のファイルのみを転送するようにします。 M はメガバイト、G はギガバイトを表すことができます。