다음과 유사한 디렉토리 구조가 있습니다.
/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 디렉토리 만 (그 내용을 포함하여) / master 아래의 하나의 하위 디렉토리에있는 .checksum 이라는 하나의 디렉토리로 재배치하고 싶습니다 . / 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_inclusions 는 다음을 포함합니다.
**/
**/.checksum/**
또한 필터를 rsync
명령에 직접 포함 시키려고합니다 .
rsync -arv -R -m --include='**/' --include='**/.checksum/**' --exclude='*'/master/ /master/.checksum/
그러나 둘 다 아무것도 복사하지 않습니다.
include-from
매개 변수를 사용 하고 파일 _rsync_checksum_inclusions_를 조정 하려고 했습니다.
+ */.checksum
+ *.chk
+ *.sum
+ *check.sh*
그러나 모든 디렉토리의 모든 파일 을 복사 합니다 . 필터를 포함하여 - *
아무것도 복사하지 않습니다.
서브 디렉토리 세트 를 어떻게 동기화 할 수 있습니까? , 나는 /.checksum 디렉토리의 rsync
일부 를 다양한 수준 으로 할 수 있었지만 전부는 아닙니다. 잘못된 패턴을 사용하고 있다고 생각합니다.