rsync で完全同期を行う方法(–delete-excluded オプションを利用)

はじめに

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 を使った完全同期のポイント:

  1. --delete を指定すると、宛先にある不要なファイルが削除される
  2. --delete-excluded を追加すると、除外ファイルも削除できる
  3. --dry-run で事前確認を行うと安全
  4. --progress を使うと転送状況が見やすい

rsync はシンプルながら強力な同期ツールなので、用途に応じて適切にオプションを設定し、安全にデータを管理しましょう!

コメント

タイトルとURLをコピーしました