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

rsync-dry-run: rsync実行前のプレビュー

rsync-dry-runは、実際のファイル転送や変更を行わずに、rsyncコマンドが実行された場合にどのファイルがコピー、削除、または変更されるかを事前に表示する機能です。これは主に「rsync -n」または「rsync --dry-run」オプションを使用して実装されます。重要なデータを扱う前に予期しない結果を防ぐために、必ず使用すべき安全策です。

概要

rsyncのドライラン(dry-run)モードは、実際の操作を実行する前にコマンドの効果をシミュレーションし、ユーザーに変更内容をプレビュー表示します。これは特に「--delete」オプションのような破壊的な操作を含む複雑なrsyncコマンドを実行する際に非常に重要です。

主な利点

  • データ損失の防止:意図しないファイルの削除や上書きを事前に検出します。
  • 予期しない変更の確認:どのファイルが転送または変更されるかを正確に把握します。
  • コマンドの検証:複雑なrsyncオプションの組み合わせが正しく機能するかを確認します。
  • 時間の節約:大規模な転送で不要な操作を事前に除外します。

主なオプション

rsync-dry-runは実際にはrsyncコマンドのオプションを活用するものであるため、rsyncの主要なオプションの中でドライランと共によく使用されるものを説明します。

ドライラン関連オプション

一般的なrsyncオプション(ドライランと併用)

生成されたコマンド:

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

説明:

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

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

使用例

rsyncのドライランモードを活用する様々なシナリオです。すべての例は実際の変更なしに結果を表示します。

基本的なドライラン

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

ソースディレクトリの内容をターゲットディレクトリに同期する際に、どのファイルが転送されるかを事前に確認します。

削除オプションと併用したプレビュー

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

ターゲットディレクトリにのみ存在するファイルを削除する場合、どのファイルが削除されるかを事前に確認します。これは非常に重要なステップです。

リモートサーバーへのドライラン

rsync -avn /path/to/local/ user@remote_host:/path/to/remote/

リモートサーバーへファイルを転送する前に、どのファイルが転送されるかを事前に確認します。

特定のファイルを除外・含めるドライラン

rsync -avn --exclude='*.log' --include='data/' --include='*/' --exclude='*' /path/to/source/ /path/to/destination/

特定の拡張子のファイルを、特定のディレクトリのみを含めるような複雑なフィルタリングルールがどのように適用されるかを確認します。

ヒントと注意点

rsyncのドライラン機能を効果的に使用するためのヒントと注意点です。

常にまずドライランを使用

特に「--delete」オプションや複雑なフィルタリングルールを使用する際は、実際のrsyncコマンドを実行する前に必ず「-n」オプションを使用して結果を確認してください。これは取り返しのつかないデータ損失を防ぐための最善の方法です。

  • **安全第一:**重要なデータの同期時には、常に「rsync -avn ...」から始めてください。
  • **出力の分析:**ドライランの出力を注意深く確認し、予期しない点がないか検討してください。

rsyncのインストール確認

rsyncはほとんどのLinuxシステムにデフォルトでインストールされていますが、もしインストールされていない場合は、パッケージマネージャーを通じてインストールする必要があります。(例:「sudo apt install rsync」または「sudo yum install rsync」)rsync-dry-runはrsyncコマンドのオプションを使用するものであるため、rsyncがインストールされている必要があります。

スラッシュ(/)の重要性

ソースパスの末尾にスラッシュ(/)を付けるか付けないかで、rsyncの動作が変わります。ドライランでこの違いを明確に理解できます。

  • `source/`: sourceディレクトリの*内容物*をターゲットディレクトリにコピーします。
  • `source`: sourceディレクトリ*自体*をターゲットディレクトリ内にコピーします。

同じカテゴリのコマンド