Rsyncを含む除外

Rsyncを含む除外

私はこのような質問が何十億ものあることを知っています。しかし、私はそれらをたくさん試しましたが、これがうまくいくことができなかったと確信しています。したがって、これを重複としてマークしないでください。

次のファイルシステムがあります。

1_counts/
|_________sample1/
          |__________boring_file1
          |__________boring_file2
          |__________boring_dir1/
                     |__________boring_file1
                     |__________boring_file2
          |__________dir/
                     |__________boring_file1
                     |__________boring_file2
                     |__________another_dir/
                                |__________file1
                                |__________file2
                                |__________file3
                                |__________boring_dir/
                                           |__________boring_file
                                |__________boring_file.RData

複数の「サンプル」ディレクトリがあります。

でファイル1、2、3を同期する必要がありますanother_dir/。ファイル構造を維持したい(ターゲットに子/ディレクトリはありません)。すべてをコピーしたくありません。

まず、すべてを次の場所に入れてみましたdir/another_dir

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*" 1_counts/* .

メッセージを含むファイルは返されません[sender] hiding directory sample_1 because of pattern *。同じ

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*" 1_counts/* .

このオプション(ここではソリューション1)は次のすべての項目を検索しましたdir/another_dir/

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .

正直言って、私はそれを推測した。なぜ除外すべきかわかりません*/*

試してみると

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*/*" 1_counts/* .

dir/another_dir目次だけが分かり、内容はわかりません。予想通り。

もし私がするなら

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/*" \
--exclude="*/*" 1_counts/* .

dir/内容はなく目次のみ出てきます。予想されると思います(2回目の回答ここanother_dir)しかし、なぜ私が謎を得ることができないのか混乱しています。

それでも、今ソリューション1を使用して1_counts/sample1/dir/another_dir。今Boring_file.RDataとdir/another_dir/boring_dir

頑張った

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .

これはうまくいきません。すべてがまだ含まれています。道と関係があると思って私も試してみました。

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="dir/another_dir/*.RData" \
--exclude="dir/another_dir/boring_dir/" \
--exclude="*/*" 1_counts/* .

いいえ。オプションが不足していて、これらのいくつかが機能する理由は何ですか?

これに対するご意見をお寄せいただきありがとうございます。

答え1

この時点でソリューションに非常に近づいています。

rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .

内容はこれですrsync 最初の一致パターンの使用そのため、以下の内容をすべて含めると、面倒なanother_dirコンテンツと.RDataファイルを効果的に含めることができます。フィルタルールの順序を変更するだけです。

rsync -r -v --dry-run --include="dir/" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .

順序が重要だから人々は、拡張子ごとにファイルを除外するために最初からルールを作成します。最後に、すべてのルールを除外します。

関連情報