ホーム > ファイル・ディレクトリ管理 > rsync-delete

rsync --delete: ソースと同期して宛先ファイルを削除

`rsync` コマンドの `--delete` オプションは、ソースディレクトリと宛先ディレクトリを同期する際に、ソースに存在しないファイルを宛先ディレクトリから削除する機能を提供します。これは、バックアップやミラーリングで宛先ディレクトリをソースと完全に一致させたい場合に便利です。強力な機能であるため、使用には細心の注意が必要です。

概要

`rsync --delete` は、ソースディレクトリの内容を宛先ディレクトリにコピーし、同時に宛先ディレクトリにのみ存在するファイルやディレクトリを削除することで、両方の場所を完全に同期します。主にバックアップの同期、Webサーバーのデプロイ、開発環境の同期などで使用されます。

主な特徴

  • ソースと宛先ディレクトリの完全な同期
  • 宛先にのみ存在するファイル/ディレクトリの削除
  • 差分転送による効率的な同期
  • ネットワーク経由でのリモート同期サポート

主なオプション

`rsync --delete` を使用する際に一緒に活用される主なオプションです。特に `--dry-run` オプションは、致命的なミスを防ぐために必ず最初に使うべきです。

同期制御

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`rsync-delete` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

`rsync --delete` は強力な機能であるため、常に `--dry-run` オプションを使用して事前に結果を確認することが重要です。

削除操作のプレビュー (必須)

rsync -avn --delete /path/to/source/ /path/to/destination/

ソースディレクトリ (`/path/to/source`) と宛先ディレクトリ (`/path/to/destination`) を同期する際に、どのファイルが削除されるかを事前に確認します。実際には変更は行われません。

実際の同期と削除

rsync -av --delete /path/to/source/ /path/to/destination/

プレビューで安全性を確認した後、実際にソースと宛先を同期し、宛先にのみ存在するファイルを削除します。`-a` はアーカイブモード、`-v` は詳細な出力を意味します。

特定のファイル/ディレクトリを除外して同期と削除

rsync -av --delete --exclude='logs/' --exclude='*.tmp' /path/to/source/ /path/to/destination/

ソースに存在しないファイルを宛先から削除しますが、特定のファイルやディレクトリ(例: `logs/` ディレクトリと `*.tmp` ファイル)は削除対象から除外して同期します。

リモートサーバーと同期して削除

rsync -av --delete /path/to/local/source/ user@remote_host:/path/to/remote/destination/

ローカルディレクトリの内容をリモートサーバーのディレクトリと同期し、リモートサーバーにのみ存在するファイルを削除します。SSH経由で安全に転送されます。

ヒントと注意点

`rsync --delete` は非常に強力で破壊的なコマンドになり得るため、使用時には以下の点を必ず理解しておく必要があります。

最も重要な注意点

  • **常に `--dry-run` (-n) を最初に使う**: 実際の実行前に、どのファイルが削除されるかを必ず確認してください。
  • **ソース (Source) と宛先 (Destination) のパスを確認**: パスを間違えると意図しないデータ損失が発生する可能性があります。
  • **バックアップは必須**: 重要なデータを扱う際は、必ず事前にバックアップを行ってください。
  • **スラッシュ (/) の重要性**: ソースパスの末尾にスラッシュがあるとディレクトリの「内容物」を、ない場合は「ディレクトリ自体」をコピーします。`--delete` と一緒に使用する際には、この違いが重要になります。

パスのスラッシュ (/) の違い

ソースパスの末尾のスラッシュの有無によって動作が変わります。

  • `rsync -av --delete source/ dest/`: `source` ディレクトリの*内容物*を `dest` にコピーし、`dest` にのみ存在するファイルを削除します。`source` ディレクトリ自体は `dest` に作成されません。
  • `rsync -av --delete source dest/`: `source` ディレクトリ*自体*を `dest` ディレクトリ内にコピーします。つまり、`dest/source/` というパスが作成されます。`dest` に `source` ディレクトリと同じ名前の別のファイルが存在する場合、それが削除される可能性があります。

同じカテゴリのコマンド