rsync: Excluindo padrão no arquivo de exclusão não funciona

1

Estou tentando excluir todos os arquivos de backup do vim (arquivos * .swp ocultos) da sincronização. O padrão no meu arquivo de exclusão é assim:

**.swp

Minha chamada do rsync:

rsync -ravu --exclude=~/sync/exclude.txt /home/username/Documents/ remotehost:/home/username/Documents/

O arquivo fica em um subdiretório da raiz de sincronização. Não funciona. O Rsync copia o arquivo de backup do vim também. Eu também tentei: * .swp

O que estou fazendo de errado?

    
por StrawHat 12.03.2017 / 10:32

2 respostas

3

Você está usando --exclude (que espera um padrão) em vez de --exclude-from (que espera o nome de um arquivo contendo padrões).

Você também não precisa de -r ( --recursive ) com -a ( --archive ), pois -a ativa a sincronização recursiva. De fato, -a é o mesmo que -rlptgoD de acordo com o manual.

    
por 12.03.2017 / 10:42
3

Você não precisa do ** e, para um único padrão, também pode usar --exclude . O padrão --include garante que os diretórios correspondentes ao padrão --exclude sejam incluídos na cópia.

rsync -a  --include '*/' --exclude='.*.swp' /home/username/Documents/ remotehost:/home/username/Documents/

Se o seu nome de usuário remoto tiver /home/username como seu diretório inicial, você poderá simplificar ainda mais com um caminho relativo:

rsync -a  --include '*/' --exclude='.*.swp' /home/username/Documents/ remotehost:Documents/

Tenha em mente também que vim usará outros nomes de arquivos para o seu arquivo de troca se um *.swp correspondente já existir ou estiver em uso. Mas você pegará a maioria deles com esse padrão único. Veja o que a documentação avisa:

If this file already exists (e.g., when you are recovering from a crash) a warning is given and another extension is used, ".swo", ".swn", etc.

Você poderia adaptar o padrão de exclusão para usar .*.sw[a-p] se estivesse suficientemente preocupado.

    
por 12.03.2017 / 13:01

Tags