Rsync 필터(포함/제외)

Rsync 필터(포함/제외)

일부 파일/폴더를 rSync하고 싶지만 필터에 문제가 있습니다. 내 소스 FS는 다음과 같습니다.

.
|_ Invent/
|  |+ Comps/
|  |+ Prod/
|  |_ Other/
|_ Archive/
|  |_ Comps/
|  |_ Prod/
|  |_ Other/
|+ Comps.csv

아시다시피 저는 2개의 디렉토리와 1개의 파일을 동기화하고 싶습니다. 또한 디렉터리와 파일 구조를 저장하고 싶습니다.

./Invent/Comps/*
./Invent/Prod/*
./Comps.csv

다음 명령을 시도했습니다.

rsync -avze "ssh -i key_file" 
    --include "Comps.csv" 
    --include "/Invent/Comp/*" 
    --include "/Invent/Prod/*" 
    --exclude "*" 
    /source/path/ rsync@srv:/target/path/

결과적으로 /source/path/에서도 많은 정크 파일을 얻었습니다. 뭐가 문제 야?

답변1

약간의 브레인스토밍 끝에 올바른 해결책을 찾았습니다.

--exclude 'Archive' 
--include 'Invent/Comp/' 
--include 'Invent/Prod/' 
--exclude 'Invent/*'

답변2

포함 및 제외 패턴은 복사하거나 복사를 피해야 하는 파일이나 디렉터리가 어디에 있는지 확실하지 않거나 명령줄에 편리하게 나열하기에는 경로 이름이 너무 많은 경우에 종종 필요합니다.

복사하려는 경로가 무엇인지 정확히 알고 있고 경로가 너무 많지 않기 때문에 포함 및 포함 패턴을 전혀 사용하지 않고 경로를 나열하고 (또는 )을 rsync사용하는 것이 좋습니다 .-R--relative

cd /source/path || exit
rsync -av -R Invent/Comps/ Invent/Prod/ Comps.csv rsync@srv:/target/path/

대상으로 전송된 경로가 현재 디렉터리를 기준으로 하도록 먼저 작업 디렉터리를 소스 디렉터리로 변경해야 합니다.

관련 정보