同じディレクトリ名に対する異なる rsync 動作

同じディレクトリ名に対する異なる rsync 動作

2つのコードベースを同期させたいです。以下のコマンドは、次の2つのディレクトリがあるユースケースを考慮しないことを除いてうまくいきます。テストさまざまな場所で:

  • /試験/
  • /テスト開始/

$ rsync -avCz --delete-before --progress --exclude=test /tmp/codebase/ .

やりたいことは除外するんだ/試験rsyncのディレクトリは正確ですが、望んでいます。/テスト開始rsyncを実行します。

静的TXTファイルを作成したくありません。 rsyncにパラメータとして渡す必要があります。それ以外の場合、これを達成する方法はありますか?誰と遊ぶか- 含むVS- 除外そして末尾のスラッシュ(--除外=テスト/)期待どおりに動作しませんでした。

答え1

/転送ルートでのみリーダーを使用して一致させることができます。この試み:

rsync -avCz --delete-before --progress --exclude=/test/ /tmp/codebase/ .

これは主要なマニュアルページスニペットです/

パターンが / で始まる場合はファイル階層の特定の場所に固定され、そうでない場合はパス名の末尾と一致します。これは正規表現の前にある^に似ています。したがって、「/foo」は、「転送ルート」(グローバルルールの場合)またはマージされたファイルディレクトリ(ディレクトリ固有のルールの場合)の「foo」名と一致します。正規化されていない「foo」は、アルゴリズムが上から下に再帰的に適用されるため、ツリー内のどの場所でも「foo」名と一致します。各パスコンポーネントが順番にファイル名の末尾にあるかのように動作します。固定されていない「sub / foo」でも、「sub」というディレクトリに「foo」が見つかった階層のすべてのポイントと一致します。

末尾の場合/:

パターンが/で終わる場合は、通常のファイル、シンボリックリンク、またはデバイスではなくディレクトリのみが一致します。

修正する

あなたの意見を見ると、あなたもこの--delete-excludedオプションを探しているようです。

関連情報