rsync: 소스에서 디렉터리 제외

rsync: 소스에서 디렉터리 제외

아래 코드에서 발생하며 rsync무시됩니다 --exclude. 이를 수정하고 여러 디렉터리로 확장하려면 어떻게 해야 합니까?

$ rsync --help | grep Usage
Usage: rsync [OPTION]... SRC [SRC]... DEST

$ man rsync | grep -- '--exclude'
   --exclude=PATTERN        exclude files matching PATTERN

$ sudo rsync -avz --exclude='/home/erwann/.cache/' '/home/erwann' '/run/media/erwann/bkup'
sending incremental file list
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/index
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/doomed/
erwann/.cache/mozilla/firefox/otj9do4j.default-release/cache2/entries/

답변1

패턴은 경로 이름 비트를 고려합니다.아니요소스 경로의 일부입니다. 이는 디렉토리와 일치한다는 의미입니다..cache 곧장소스 경로 아래에서 패턴으로 /home/erwann사용합니다 /erwann/.cache/(해당 디렉토리가 "전송 루트" /home역할을 하기 때문에).rsync

rsync -av --exclude=/erwann/.cache/ /home/erwann /run/media/erwann/bkup

경로 상단에 제외 패턴을 고정함으로써 /파일 계층 구조의 하위 부분에서 일치하는 것을 방지합니다.

/소스 경로 끝에 추가하면 /home/erwann"전송 루트"가 되므로 패턴을 /.cache/.다음에 추가 erwann이전과 동일한 효과를 얻으려면 대상 경로로 이동하십시오.

rsync -av --exclude=/.cache/ /home/erwann/ /run/media/erwann/bkup/erwann

rsync매뉴얼 에서 :

전송을 발신자에서 수신자로 전송된 이름의 하위 트리로 생각하면 전송 루트는 트리가 대상 디렉터리에서 복사를 시작하는 지점입니다. 이 루트는 패턴이 match 로 시작하는 위치를 제어합니다 /.

관련 정보