하나의 규칙 파일로만 rsync하고 일부 경로는 제외하고 선택된 하위 경로를 재귀 적으로 포함


3

폴더의 모든 내용을 제외하고 일부 하위 폴더를 제외하고 싶 --exclude거나 --include명령 줄 옵션을 추가하지 않고 단일 규칙 파일로만 수행하고 싶습니다 . 이것이 가능한가? 유지 관리 및 문서화가 더 쉬우므로 단일 규칙 파일이 중요합니다.

다음 명령을 실행합니다

rsync -a -F --filter "merge backup-filter" /mnt/home/common /mnt/backup

파일로 backup-filter:

# non-rooted rules take precedence
+ .git/*
+ .gitignore
- .*.sw?

# rooted rules
+ /common/backup*
- /common/opt/
+ /common/usr/

# FIXME
+ /common/root/startup/*
+ /common/root/.config/gopt/*
- /common/root/*

그리고 두 개의 .rsync-filter파일

# cat ./usr/bin/.rsync-filter
# Assume command-line option --filter=':- .gitignore', which
# backs up all file/folders that aren't listed in ./.gitignore

# cat ./usr/.rsync-filter
+ usr/bin
- */

시작하는 규칙 블록 FIXME은 깨진 조각입니다. 모든 내용을 제외하는 것을 의미 /common/root하지만, 내용을하자 startup.config/gopt복사. 이 때문에 고장 startup.config/gopt복사되지 않습니다.

시간이 지남에 따라 다양한 수준에서 제외 경로를 더 추가하고 경로에 대해 여기에서 수행하는 것과 같은 일부 하위 경로를 추가 할 계획입니다 /common/root. 따라서 규칙 파일이 상당히 커질 것입니다.


을 사용 -F하지만 .rsync-filter파일 내부의 내용을 표시하지 않습니다 .
ams

@ams 내 감독을 잡아 주셔서 감사합니다. .rsync-filter파일이 추가되었습니다.
stepse

답변:


1

당신은 이것을 필요로합니다 :

+ /common/root/startup/
+ /common/root/startup/*
+ /common/root/.config/
+ /common/root/.config/gopt/
+ /common/root/.config/gopt/*
- /common/root/.config/*
- /common/root/*

또는 나중에 파일 별 규칙을 무시하지 않으려는 경우 다음과 같이하십시오.

+ /common/root/startup/
+ /common/root/.config/
+ /common/root/.config/gopt/
- /common/root/.config/*
- /common/root/*

문제는 결코 되풀이되지 않았 startup거나 지시하지 .config않았기 때문 - /common/root/*입니다.

이 버전은 당신이 있음을 명시 적으로 말한다 않는 해당 디렉토리를 원한다. 이와 같은 하위 디렉토리를 선택하려면 모든 상위 디렉토리 레벨에 대해이 작업을 수행해야합니다.

또 다른 트릭을 포함하는 모든 디렉토리+ */상단을하고 제외 파일 당신이 원하지 않는를 - /common/root/**. 그런 다음 빈 디렉토리의 혼란을 정리할 수 --prune-empty-dirs있지만 이로 인해 실제 빈 디렉토리뿐만 아니라 내용을 제외하기로 선택한 디렉토리도 제거됩니다.


예, 첫 번째 블록은 내 질문에 대답합니다. 두 번째 블록도 숙고 할 계획이지만 만족합니다. 며칠 안에 다른 사람이 들어올 경우를 대비하여 답변을 드리겠습니다. 올바른 SA 에티켓이 아닌 경우 저를 잊어 버리십시오.
stepse

지금 받아들이면 나중에 마음을 바꿀 수 있다고 생각합니다.
ams

답변을 수락했습니다. 감사합니다. 저의 명성이 여전히 미미한 수준이기 때문에 공감할 수도 없었습니다.
stepse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.