아래 코드에서 발생하며 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 로 시작하는 위치를 제어합니다
/
.