rsyncにはサブディレクトリのみが含まれます。

rsyncにはサブディレクトリのみが含まれます。

現在、私はサブディレクトリのファイルだけを含み、他のすべてのファイルは除外する解決策を見つけるのに苦労しています。ファイル構造は次のとおりです。

$ tree ../
../
├── from
│   ├── a
│   │   ├── aa
│   │   │   └── x.txt
│   │   ├── a.txt
│   │   └── b.txt
│   └── b
│       ├── b.txt
│       └── c.txt
└── to

そしてa/aa/の内容のみ/に送信されます。

$ rsync -avh --include=a/aa/*** --exclude=* ../from/ ../to/

機能せず to/ は空ですが、a/ を使用してこれを行います。

$ rsync -avh --include=a/*** --exclude=* ../from/ ../to/

効果がある

$ tree ../
..
├── from
│   ├── a
│   │   ├── aa
│   │   │   └── x.txt
│   │   ├── a.txt
│   │   └── b.txt
│   └── b
│       ├── b.txt
│       └── c.txt
└── to
    └── a
        ├── aa
        │   └── x.txt
        ├── a.txt
        └── b.txt

しかし、a.txtとb.txtがあってはいけません。私が逃したものは何ですか?

ご協力ありがとうございます。

答え1

最初のコマンドでは、以降のコマンドはすべてa/aa/***一致しますが、一致するものがないため、何もコピーされません。aa/a/

2番目のコマンドでは、それに続くすべての項目がa/***一致するため、コンテンツa/以上のコンテンツがコピーされます。a/aa/

たとえば、次のようにすれば十分です。

rsync -avh --include='/a/' --include='/a/aa/***' --exclude='*' from/ to/

man rsync到着INCLUDE/EXCLUDE PATTERN RULES

関連情報