Excluindo uma pasta do diretório inicial com a lista de exclusão rsync

4

Estou tentando configurar rsync para o OS X 10.8.4 usando um arquivo de exclusão. No entanto, ele não reconhece os caminhos que desejo excluir.

Eu quero copiar o diretório de usuário ABC para uma pasta chamada Backup_Mac em uma unidade externa montada.

rsync -av --progress --exclude-from='/Users/ABC/excludelist.txt' /Users/ABC /Volumes/Backup_Mac

excludelist.txt contém

- /Users/ABC/Dropbox/

Não exclui a pasta do Dropbox.

Agora, se eu alterar o arquivo de exclusão para

- Dropbox/

está excluindo ABC/Dropbox , mas também todas as outras pastas chamadas Dropbox em outros lugares na árvore de arquivos. Não é isso que eu quero - desejo excluir apenas a pasta ABC/Dropbox , mas incluir outras pastas chamadas Dropbox , por exemplo, ABC/Application Support/Dropbox .

Alguma dica de como conseguir isso? Como eu tenho que especificar o caminho de exclusão, relativo à pasta de backup, ou em relação ao root?

    
por Alex 28.07.2013 / 16:55

1 resposta

4

Simplificando, rsync usa caminhos relativos para determinar o que excluir. De a rsync manpage :

If the pattern starts with a / then it is anchored to a particular spot in the hierarchy of files, otherwise it is matched against the end of the pathname. This is similar to a leading ^ in regular expressions. Thus "/foo" would match a file named "foo" at either the "root of the transfer" (for a global rule) (…)

A maneira mais simples de contornar isso é usar --relative / -R , que permite excluir o Dropbox assim:

rsync -avR --exclude='/Users/alex/Dropbox' /Users/alex /Volumes/Backup_Mac

O nome relative refere-se a como rsync envia os caminhos e, portanto, não tem nada a ver com a especificação de padrões de exclusão absolutos.

Observe que isso cria a árvore de diretórios completa /Volumes/Backup_Mac/Users/alex/ , mas isso não é uma coisa terrivelmente ruim no seu caso.

    
por 28.07.2013 / 19:47