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
オプションを探しているようです。