Rsync는 와일드카드로 파일 및 폴더를 무시합니다.

Rsync는 와일드카드로 파일 및 폴더를 무시합니다.

폴더 이름과 와일드카드를 사용하여 삭제 서버에서 다운로드할 때 특정 폴더 아래의 모든 파일이나 폴더를 무시하고 싶습니다.

"/*.old/" 아래의 모든 파일이나 폴더를 제외하고 싶지만 폴더가 여러 위치에 존재할 수 있습니다.

예를 들어 여러 항목이 있는 위치를 지정해야 합니까? 아니면 이전 폴더가 나타날 때마다 제외할 수 있는 방법이 있습니까?

--exclude='*/*.old*/*'
--exclude='*/*/*.old*/*'
--exclude='*/*/*/*.old*/*'
--exclude='*/*/*/*/*.old*/*'

이것이 내가 사용하는 명령입니다

rsync -amHAXxzvR --update --numeric-ids --progress  --include='*/' --include=*.sas7bdat --exclude='*.old/' --exclude=* -e "ssh -T -c blowfish-cbc -o Compression=yes -x" [email protected]:/XXX/ /mnt/z/XXX/.

/sasdata.old/라는 폴더와 그 하위 폴더를 제외하고 싶습니다. 이 폴더는 어디에나 있을 수 있습니다.

답변1

소스 트리 상단에 있는 디렉터리와 독립적이도록 지정하기만 하면 됩니다.

--exclude '*.old/'

이제 완전한 명령을 확인한 후에도 여전히 명령을 작동시킬 수 없는 이유가 분명해졌습니다.포함 및 제외 옵션은 왼쪽에서 오른쪽으로 적용됩니다.특정 파일이나 디렉터리에 대해 첫 번째로 일치하는 파일이나 디렉터리가 적용됩니다. 따라서 귀하의 경우 원치 않는 디렉터리를 먼저 제외하고 모두 포함해야 합니다.

바라보다슈퍼유저에 대한 나의 답변자세한 내용을 확인하세요.

이 시도,

rsync -aHAX -xu -z -v -R --numeric-ids --progress --prune-empty-dirs \
    --exclude='*.old/' --include='*/' \
    --include='*.sas7bdat' --exclude='*' \
    -e "ssh -T -c blowfish-cbc -x" \
    [email protected]:/XXX/ /mnt/z/XXX/.

관련 정보