Use o rsync para obter apenas uma pasta e seu conteúdo com um padrão

4

Eu procurei por toda a internet, procurei em sites regexp e tudo mais, mas não consigo escrever um comando rsync para buscar o que eu quero.

Eu preciso espelhar a versão do FreeBSD, mas eu não preciso das versões RC e BETA, então eu só preciso rsync qualquer pasta com RELEASE em seu nome com todos os arquivos e subpastas desta pasta.

Neste momento, tenho este comando em execução sem sucesso:

rsync -vaz --delete --dry-run ftp2.br.freebsd.org::FreeBSD/releases/amd64 /usr/repos --include=".{0,}(RELEASE)" --filter="-! */"

Vamos criar a seguinte estrutura de pastas:

amd64/8.3-RELEASE/
amd64/8.4-RC2/
amd64/amd64/10.0-RC5/
amd64/amd64/10.0-RELEASE/
amd64/amd64/9.1-RELEASE/
amd64/amd64/9.2-BETA1/
amd64/amd64/9.2-BETA2/
amd64/amd64/9.2-RC1/

Nesse caso, o rsync só deve receber:

amd64/8.3-RELEASE/
amd64/amd64/10.0-RELEASE/
amd64/amd64/9.1-RELEASE/
    
por Vinícius Ferrão 24.04.2014 / 07:09

1 resposta

3

Tente isto:

$ rsync -vaz --delete --dry-run ftp2.br.freebsd.org::FreeBSD/releases/amd64 /usr/repos \
    --include="*RELEASE/***" --include="*/" --exclude="*" --prune-empty-dirs

Eu acho que é o que você quer depois.

    
por 24.04.2014 / 21:38