Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

rsyncコマンド(アールシンク)とは | 意味や読み方など丁寧でわかりやすい用語解説

rsyncコマンド(アールシンク)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

アールシンクコマンド (アールシンクコマンド)

英語表記

rsync command (アールシンク コマンド)

用語解説

rsyncコマンドは、UNIX系システムで広く利用されるファイル同期ツールである。ローカルのディスク間、あるいはローカルとリモートのサーバー間で、効率的かつ高速にファイルを転送・同期する目的で使用される。その最大の特徴は、送信元と受信先のファイルの「差分」のみを転送する独自のアルゴリズムにあり、これによりネットワーク帯域の消費を最小限に抑え、転送時間を大幅に短縮できる。主にシステムのバックアップ、サーバー間のデータ同期、ウェブサイトのデプロイメントといったシナリオで不可欠なツールとして重宝されている。

rsyncコマンドの基本的な構文は rsync [オプション] 送信元 受信先 となる。この「送信元」と「受信先」には、ローカルパスだけでなく、SSHなどのリモートシェルを介したリモートパスも指定できるため、柔軟なファイル操作が可能である。

例えば、ローカルでディレクトリ source_dir の内容を destination_dir に同期する場合、rsync -a source_dir/ destination_dir/ のように記述する。ここで末尾のスラッシュは重要で、source_dir/ とすることでsource_dirディレクトリの中身を同期対象とし、source_dir自体は同期先ディレクトリ内に作成されない。もしスラッシュを付けずに source_dir と記述すると、source_dirというディレクトリごとdestination_dir内に作成される。

リモートホストとの同期では、rsync -a -v -z source_dir/ user@remote_host:/path/to/destination_dir/ のように記述し、SSHプロトコルを通じてセキュアにファイルを転送できる。この際、リモートホストへの接続にはSSHの認証情報が利用される。

rsyncコマンドが持つ豊富なオプションは、その柔軟性と強力さの源である。主要なオプションについて解説する。

-a または --archive オプションは「アーカイブモード」と呼ばれ、最も頻繁に使用される。これは -r (再帰的)、-l (シンボリックリンクを維持)、-p (パーミッションを維持)、-t (タイムスタンプを維持)、-g (グループを維持)、-o (所有者を維持)、-D (デバイスファイルとスペシャルファイルを維持) といった複数のオプションをまとめたもので、ほとんどのバックアップや同期作業で元のファイルの属性を完全に保持したい場合に非常に便利である。

-v または --verbose オプションは、転送処理の詳細を表示する。どのファイルが転送され、どのファイルが削除されるかなど、コマンドの実行内容を視覚的に確認できるため、意図しない操作を防ぐためにも活用されることが多い。

-z または --compress オプションは、データ転送時にファイルを圧縮する。ネットワーク帯域が限られている環境や、大容量のファイルを転送する際に有効で、転送効率を向上させる。

-h または --human-readable オプションは、ファイルサイズなどの情報を人間が読みやすい形式(例: KB, MB, GB)で表示する。-v オプションと組み合わせて使用すると、より分かりやすい出力が得られる。

-n または --dry-run オプションは、実際にファイル転送や削除を実行せず、何が行われるかをシミュレーションする。特に --delete オプションと組み合わせて使用する場合など、重要なデータを扱う前に必ず実行して、意図通りの動作になるかを確認すべき極めて重要なオプションである。

--delete オプションは、送信元に存在しないファイルを、受信先から削除する。これにより、送信元と受信先のディレクトリ内容を完全に一致させる「ミラーリング」が可能となる。このオプションは非常に強力であるため、使用時には細心の注意が必要であり、前述の -n オプションとの組み合わせによる事前確認が強く推奨される。

-P オプションは --partial--progress を組み合わせたもので、転送中に中断された場合に部分的に転送されたファイルを維持し、次回実行時に中断した箇所から転送を再開できる機能と、転送の進行状況を表示する機能を提供する。大容量ファイルの転送中にネットワークが不安定な場合などに役立つ。

--exclude=パターン オプションは、特定のファイルやディレクトリを同期対象から除外する。例えば、.git/ ディレクトリや一時ファイルなど、同期不要なものを指定できる。複数の除外パターンを指定することも可能である。

rsyncの効率性の核となるのは、その「差分転送アルゴリズム」にある。これは、送信元と受信先のファイル間で異なっている部分のみを特定し、その差分データだけを転送する仕組みである。具体的には、ファイルを小さなブロックに分割し、各ブロックに対してローリングチェックサムとハッシュ値を計算する。受信側は自身の持つファイルのブロックのチェックサムとハッシュ値を計算し、送信側から送られてくるチェックサムと比較する。一致するブロックは転送せず、異なるブロックのみを転送する。これにより、すでに受信側にあるデータや、わずかに変更されたファイルの場合でも、ファイル全体を再転送するのではなく、変更された部分(差分)だけを効率的に転送できる。初回転送時はファイル全体が転送されるが、2回目以降の転送でこの差分転送の恩恵を最大限に受けることができる。

これらの特徴から、rsyncはバックアップ戦略において特に有用である。定期的な増分バックアップでは、前回のバックアップからの変更点のみを効率的に転送できる。また、ウェブサーバーのコンテンツを複数のサーバーに同期したり、開発環境から本番環境へのデプロイを行ったりする際にも、その高速性と信頼性から広く利用されている。

関連コンテンツ