概要:高効率なファイル同期を実現するrsyncの基本
Linux環境におけるデータ同期やバックアップ作業において、rsyncは業界標準として広く活用されている不可欠なユーティリティです。本稿では、ツールの初期セットアップからローカル環境でのレプリケーション手順、パス末尾のスラッシュ(/)がもたらす挙動の違い、実務で重宝する主要オプション群までをターミナルでのハンズオン形式で詳解します。
rsyncの導入とローカル環境での基本同期(-avオプション)
検証作業を円滑に進めるため、まずはローカルパッケージインデックスを最新化し、システムにrsyncパッケージを組み込みます。

転送テスト用の作業環境として、同期元(ソース)と同期先(デスティネーション)のディレクトリツリーを一括生成するため、mkdir -p /tmp/rsync_test/src /tmp/rsync_test/destを実行します。

検証データとして1つ目のサンプルテキストを配置するため、echo 'data 1' > /tmp/rsync_test/src/file1.txtを実行してファイルを作成します。

続けて2つ目の検証用データを用意するため、echo 'data 2' > /tmp/rsync_test/src/file2.txtを実行します。

rsyncコマンドは、ローカルディスク内だけでなくリモートホスト間においても、最小限のデータ転送量でディレクトリの同期とバックアップを完遂します。
同期元パスの末尾にスラッシュ(/)を付与することで、ディレクトリ本体ではなくその直下に存在するコンテンツ群を、各種ファイル属性を保持したまま対象先へ複製します。
⚙️ [実務で役立つ主要オプション一覧]
-a : アーカイブモード。パーミッション、所有者・グループ、タイムスタンプ、シンボリックリンクなどの属性情報を保持しながら再帰的に同期します。-v : 詳細出力(Verbose)モード。転送中のファイル名や処理結果のサマリーを画面に表示します。-z : 転送データをリアルタイム圧縮し、ネットワーク帯域の消費を抑えます。-u : アップデートモード。同期先にあるファイルの方が新しい場合、上書きをスキップします。--delete : 同期元ですでに削除されたファイルがあれば同期先からも削除し、完全な一致(ミラーリング)を保ちます。-P : 転送進捗メーターのリアルタイム表示(--progress)と、中断されたファイルの部分転送再開(--partial)を同時に有効化します。-n : ドライラン(シミュレーション)モード。実際の書き込みを行わずに処理内容を事前テストします。

同期先ディレクトリに対象ファイル群がパーミッションや更新日時を維持した状態で正しく配置されたか、ls -l /tmp/rsync_test/destで確認します。

末尾スラッシュ(/)の挙動特性と差分バックアップの仕組み
差分検出アルゴリズムの動作を確かめるため、既存ファイルへテキストを追記するecho 'data 1 updated' >> /tmp/rsync_test/src/file1.txtを実行します。

新規ファイルの同期挙動も併せて確認するため、touch /tmp/rsync_test/src/file3.txtを実行して新たな空ファイルを追加します。

変更内容を反映させるため、再びrsync -av /tmp/rsync_test/src/ /tmp/rsync_test/dest/を実行します。
ソースパス末尾のスラッシュ指定により配下のデータが対象となり、内容に変更のないfile2.txtの転送は自動で除外され、更新されたfile1.txtと新設のfile3.txtのみがスマートに差分転送されます。

完全ミラーリングを実現する–deleteと事前検証用の–dry-run
同期元で不要ファイルを破棄したケースを想定し、テスト環境からrm /tmp/rsync_test/src/file2.txtを実行して対象ファイルを削除します。

不意のデータ喪失を防ぐため、rsync -av --delete --dry-run /tmp/rsync_test/src/ /tmp/rsync_test/dest/を実行して同期結果を仮想シミュレーションします。--dry-runを併用することで、ソース側から消去されたfile2.txtがデスティネーション側で削除対象(deleting file2.txt)として判定される様子を、ファイルシステムを一切傷つけずに事前検証できます。

安全性が確認できたら、本番実行としてrsync -av --delete /tmp/rsync_test/src/ /tmp/rsync_test/dest/を実行します。--deleteオプションが適用され、ソース側から取り除かれたfile2.txtが同期先側からもクリーンアップされ、両ディレクトリが完全に等価な状態へ揃えられます。

同期先ディレクトリをls -l /tmp/rsync_test/destで照会し、file2.txtが消去され最新のアクティブファイルのみが整合性を保って残存していることを確認します。

大容量転送を最適化する圧縮転送とリアルタイム進捗表示(-avzP)
大規模ファイルの転送負荷を軽減する機能とインジケーター表示を試すため、dd if=/dev/urandom of=/tmp/rsync_test/src/sample_large.dat bs=1M count=10を実行して10MBのバイナリファイルを生成します。

大容量データの同期に最適なオプションを組み合わせ、rsync -avzP /tmp/rsync_test/src/ /tmp/rsync_test/dest/を実行します。-zオプションによるストリーム圧縮で通信トラフィックを最適化しつつ、-Pオプションにより転送完了率(100%)やリアルタイムのスループットをモニタリングしながら、セキュアかつ堅牢なファイル転送が実現できます。

本記事では、Linuxシステムにおける高信頼なバックアップ・データ同期の定番ツールであるrsyncの基本操作と重要オプションを実践的に解説しました。
業務要件や運用環境に応じてこれらのオプションを的確に使い分け、堅牢でスピーディなデータ運用基盤を整備してみてください。