Единственный способ, которым я могу придумать, это поместить файл .rsync-filter
в Data/subDir1/
, содержащий следующие три строки.
include /*/
exclude /*
exclude /.rsync-filter
Первая включает все каталоги в этом файле, а втораяодин исключит все.Здесь важен порядок, потому что применяется первое соответствующее правило.Таким образом, первая строка обеспечивает обработку всех каталогов, даже если мы хотим исключить все файлы, не относящиеся к каталогам, в Data/subDir1/
.
Страница man rsync содержит все подробности.Просто поищите - фильтр и ПРАВИЛА ФИЛЬТРА в нем.
Data
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│ ├── A.html
│ ├── .rsync-filter
│ └── subDir1a
│ └── AA.html
└── subDir2
└── B.html
После команды rsync -rvt -F Data/ dest
Опция -F
rsync учитывает .rsync-filter файлов, присутствующих в каждом каталоге.
dest выглядит следующим образом.
dest
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│ └── subDir1a
│ └── AA.html
└── subDir2
└── B.html