rsync를 사용한 복잡한 포함 / 제외


14

복잡한 포함 / 제외를 수행하기 위해 rsync 필터 구문을 시도하고 다음을 달성하려고합니다.

Include /
Exclude /home
Include /home/user1/*
Include /home/user2/subdir/*

필터 구문에서 많은 변형을 시도했지만 매뉴얼 페이지를 여러 번 읽었음에도 불구하고 이러한 종류의 효과를 얻을 수 없습니다. Rsync 필터는 매우 강력한 것으로 보이며 이와 같은 일반적인 시나리오를 처리 할 수 ​​없다고 생각하기가 어렵습니다.

답변:


17

제외 규칙을 사용하기 전에 모든 상위 디렉토리를 원하는 디렉토리에 포함시켜야합니다.

예를 들어 백업 스크립트에서 다음을 사용합니다.

rsync -av \ 
--filter='+ /var/' \
--filter='+ /var/backups/' \
--filter='- /var/*' \
/ \
$DEST

따라서 귀하의 경우 다음과 같은 것이 필요합니다.

rsync -av \ 
--filter='+ /home/' \
--filter='+ /home/user1/' \
--filter='+ /home/user2/' \
--filter='+ /home/user2/subdir/' \
--filter='- /home/user2/*' \
--filter='- /home/*' \
/ \
$DEST

우수한. 시간이 좀 걸렸다
yclian

어떻게 든을 읽을 때 man rsync올바른 혼합 순서에 포함 및 제외가 잘못 이해되어 있습니다. 그것을 알아내는 데 1 시간이 걸렸습니다 ...
Adam Ryczkowski

6

명령 행에서 :

rsync --dry-run --verbose --recursive --include=/home/user1 --exclude=/home/* / DEST

--dry-run기능을 수행하려면 제거 하고 "DEST"를 대상으로 바꾸고 필요한 경우 사용자 및 호스트를 소스 "/"에 추가하십시오.

규칙 파일에서 :

rsync --dry-run --verbose --recursive --filter='merge /etc/rsync/somerules.rules' / DEST

내용은 /etc/rsync/somerules.rules다음과 같습니다.

+/ /home/user1
-/ /home/*

이를 테스트하고 조정해야 할 수도 있지만 시작해야합니다.


알았어. 질문에 더 복잡한 사례가 있습니다. 추가 포함은 하위 디렉토리 시나리오에서 작동하지 않습니다.
brianmathis
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.