はじめに
rsync
は Linux や macOS で利用できる強力なファイル同期ツールです。ローカルやリモート間でディレクトリやファイルを効率的に同期することができます。本記事では、rsync
を使用して 完全同期(ミラーリング) を行う方法について解説します。
完全同期とは?
完全同期(ミラーリング)とは、ソースディレクトリと宛先ディレクトリを完全に一致させる ことを意味します。すなわち、
- ソースにあるファイルやフォルダを宛先にコピー
- 宛先にあるが、ソースには存在しないファイルやフォルダを削除
--exclude
で除外したファイルやフォルダも宛先から削除(オプション指定)
rsync を使用した完全同期の方法
基本的な完全同期コマンド
rsync -av --delete ソースディレクトリ 宛先ディレクトリ
オプションの説明
-a
:アーカイブモード(-rlptgoD
と同等)。ファイルのパーミッション、シンボリックリンク、タイムスタンプ、所有者情報を維持する。-v
:詳細表示(転送状況を確認しやすくする)--delete
:ソースにないファイルを宛先から削除(同期後の不要ファイルを整理)--progress
:各ファイルの転送進捗を表示(大きなファイルを扱う際に便利)--exclude=パターン
:指定したパターンのファイル・ディレクトリを除外--delete-excluded
:--exclude
で除外されたファイルも宛先から削除--dry-run
:実際には同期せず、処理内容を確認(安全対策として推奨)
例:
rsync -av --delete ~/backup/data/ ~/sync/data/
このコマンドでは ~/backup/data/
の内容を ~/sync/data/
に同期し、~/sync/data/
にあるが ~/backup/data/
にないファイルを削除します。
--delete-excluded を使用する
--delete
では、--exclude
で除外したファイルは削除されません。--delete-excluded
を追加すると、除外対象も削除 されます。
例:特定のフォルダを除外しつつ完全同期
rsync -av --delete --delete-excluded \
--exclude="logs/" \
--exclude="temp/" \
~/backup/data/ ~/sync/data/
このコマンドでは logs/
や temp/
をコピーしませんが、それらが ~/sync/data/
にすでに存在する場合は削除されます。
--dry-run で事前確認
削除を伴う rsync
は データ損失のリスクがある ため、事前に --dry-run
オプションで挙動を確認するのがおすすめです。
rsync -av --delete --dry-run ~/backup/data/ ~/sync/data/
このコマンドでは実際にはファイルのコピー・削除は行われず、実行予定の処理内容のみが表示されます。
rsync を使ったリモートサーバーとの完全同期
ローカルだけでなく、SSH 経由でリモートサーバーとも同期が可能です。
rsync -av --delete user@remote:/var/www/html/ ~/backup/html/
まとめ
rsync
を使った完全同期のポイント:
--delete
を指定すると、宛先にある不要なファイルが削除される--delete-excluded
を追加すると、除外ファイルも削除できる--dry-run
で事前確認を行うと安全--progress
を使うと転送状況が見やすい
rsync
はシンプルながら強力な同期ツールなので、用途に応じて適切にオプションを設定し、安全にデータを管理しましょう!
コメント