Никогда не используйте *
в исходном пути для rsync, rsync вполне способен найти эти записи сам.
Делая это, вы фактически вызываете rsync как
rsync --dry-run \
--include="*" \
--include='top/' \
--include='top/dir1/' \
--include='top/dir1/***' \
--exclude='top/*' \
--exclude="*" \
-av from/file1.txt from/file2 from/top .
Шаблоны включения и исключения относятся к корню источника; поэтому шаблоны --include 'top/'
и т.д. никогда не будут совпадать.
Do this:
rsync --dry-run \
--include="/*" \
--include='/top/' \
--include='/top/dir1/' \
--include='/top/dir1/***' \
--exclude='/top/*' \
--exclude="*" \
-av from/ .