У меня есть структура каталогов, похожая на следующую:
/master
/apps
/app1
myapp.app
/.checksum
20181105.chk
20181230.chk
check.sh
/app2
anotherapp.app
/.checksum
20181010.chk
20181229.chk
20181239.sum
check.sh
/app3
/sub-category1
yetanotherapp.app
/.checksum
20170605.chk
20180330.chk
check.sh
/sub-category2
/sub-category2a
someotherapp.app
/.checksum
20170702.chk
20180330.chk
20181202.sum
check.sh
/sub-category2aa
myfinalapp.app
/.checksum
20170405.chk
20180919.chk
check.sh
/games
/game1
myfirstgame.bin
myfirstgame.dat
/.checksum
20170702.chk
20181202.sum
check.sh
/game2
/sub-category1
/sub-category1a
/sub-category1aa
anothergame.bin
/.checksum
20181221.sum
check.sh
/sub-category1aaa
game_extension.bin
/.checksum
20170405.chk
20180919.chk
check.sh
Каждый каталог /.checksum содержит несколько файлов с различными расширениями ( .chk, .sh, .sum и т.д.). Я хочу переместить только каждый каталог /.checksum (с его содержимым) в один каталог с именем .checksum, расположенный в одном подкаталоге в /master. Он должен повторять ту же структуру, что и каталог /master, за вычетом содержимого. Кроме того, содержимое каждого исходного каталога /.checksum следует переместить в его родительский каталог, а каталог /.checksum отбрасывать. В конечном итоге приведенная выше структура должна выглядеть следующим образом:
/master
/apps
/app1
myapp.app
/app2
anotherapp.app
/app3
/sub-category1
yetanotherapp.app
/sub-category2
/sub-category2a
someotherapp.app
/sub-category2aa
myfinalapp.app
/.checksum
/apps
/app1
20181105.chk
20181230.chk
check.sh
/app2
20181010.chk
20181229.chk
20181239.sum
check.sh
/app3
/sub-category1
20170605.chk
20180330.chk
check.sh
/sub-category2
/sub-category2a
20170702.chk
20180330.chk
20181202.sum
check.sh
/sub-category2aa
20170405.chk
20180919.chk
check.sh
/games
/game1
20170702.chk
20181202.sum
check.sh
/game2
/sub-category1
/sub-category1a
/sub-category1aa
20181221.sum
check.sh
/sub-category1aaa
20170405.chk
20180919.chk
check.sh
/games
/game1
myfirstgame.bin
myfirstgame.dat
/game2
/sub-category1
/sub-category1a
/sub-category1aa
anothergame.bin
/sub-category1aaa
game_extension.bin
Я попытался сделать это с помощью rsync
и следующих фильтров:
rsync -arv -R /master/ /master/.checksum/ --files-from=/master/.rsync/rsync_checksum_inclusions
где /master/.rsync/rsync_checksum_inclusion содержит:
**/
**/.checksum/**
а также пытается включить фильтры непосредственно в команду rsync
:rsync -arv -R -m --include='**/' --include='**/.checksum/**' --exclude='*'/master/ /master/.checksum/
но оба ничего не копируют.
Я попытался использовать параметр include-from
и настроить файл _rsync_checksum_inclusion_:
+ */.checksum
+ *.chk
+ *.sum
+ *check.sh*
но это копирует все файлы в каждом каталоге. Включая фильтр, - *
ничего не копирует.
Использование решений из Как я могу rsync набор подкаталогов? Я также был в состоянии rsync
некоторые каталоги /.checksum на разных уровнях, но не все.
Я считаю, что я использую неправильные шаблоны.